

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]]

