Buenas tardes a todos, Quisiera crear una variable de acuerdo a ciertas condiciones. Me gustaria llegar de "datain" a "dataout".
## entrada datain <- structure(list(REF = c("999", "999", "999", "1099", "731", "731", "731", "731", "1442", "1442", "1442", "1442"), TIMEREF = c(120, 240, 360, 30, 30, 60, 90, 120, 30, 60, 90, 120), TOENDREF = c(390, 270, 150, 480, 480, 450, 420, 390, 480, 450, 420, 390)), .Names = c("REF", "TIMEREF", "TOENDREF"), row.names = c(NA, 12L), class = "data.frame") datain ## salida dataout <- structure(list(REF = c(999L, 999L, 999L, 1099L, 731L, 731L, 731L, 731L, 1442L, 1442L, 1442L, 1442L), TIMEREF = c(120L, 240L, 360L, 30L, 30L, 60L, 90L, 120L, 30L, 60L, 90L, 120L), TOENDREF = c(390L, 270L, 150L, 120L, 90L, 30L, 420L, 300L, 270L, 210L, 120L, 0L), NEWREF = c(999L, 999L, 999L, 999L, 999L, 999L, 731L, 731L, 731L, 731L, 731L, 731L)), .Names = c("REF", "TIMEREF", "TOENDREF", "NEWREF"), row.names = c(NA, 12L), class = "data.frame") dataout A continuacion describo dos casos puntuales para ilustrar las condiciones que deben satisfacerse: * Ejemplo 1 En REF = '1099', el TIMEREF es inferior al valor TOENDREF para REF = 99 (i.e., 30 < 150). Por lo tanto, la nueva variable "NEWREF" debe tomar el valor de '99'. Al realizar esta asignacion, se tiene que la fila 4 de "datain" se convierte en #REF TIMEREF TOENDREF NEWREF #4 1099 30 120 999 Aqui, 120 es el valor de TOENDREF para REF = '99'. * Ejemplo 2 El proceso continua reasignando el REF hasta que el valor resultante de TOENDREF sea inferior (o igual) al valor de TIMEREF del siguiente valor de REF como ocurre en la fila 6 de dataout #REF TIMEREF TOENDREF NEWREF #6 731 60 30 999 #7 731 90 420 731 Puesto que el valor TOENDREF de 30 en TIMEREF 99 no es suficiente para cubrir TIMEREF en TIMEREF 731, en la fila 7 NEWREF sera igual a REF. De antemano muchas gracias por la ayuda. Saludos cordiales a todos, Jorge Velez.- [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es