En primer lugar, muchas gracias Carlos por la rápida y elegante respuesta. La
he aplicado a mi base de datos, y rápidamente he obtenido "casi" el mismo
resultado que obtenía de forma rudimentaria. Digo "casi" porque hay una pequeña
diferencia de valor. Me ha faltado decir (me disculpo) que también hay que
seleccionar a las personas que entran el 31 de diciembre en caso de que éstas
no llegan a permanecer como mínimo hasta el 1 de enero que tiene lugar 1 año y
un día después.Adaptando este hecho a tu ejemplo de resolución (he cambiado a
20 el valor de "ini" del individuo "d"): # Datos simuladosdat <- data.frame(id
= letters[1:4], ini = c(1, 15, 15, 20), fin = c(11, 19, 25, 22))fin.anno <- 10
* 1:3 # Resultado que retorna:dat[mapply(function(x,y) ! any(fin.anno %in%
x:y), dat$ini, dat$fin),] id ini fin2 b 15 19 Sin embargo, el último
caso tampoco sería válido, pues reúne las dos condiciones comentadas: a) Ha
entrado justo en un número del vector "fin.anno" y b) Su dato del vector "fin"
es 22, es decir, no llega a superar el siguiente valor del vector "fin.anno"
(en este caso sería 30): # Resultado que esperaría: id ini fin2 b 15 194
d 20 22 No sé si me explico, y muchas gracias.
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es