
Buenas
tardes,

 Tengo un
data frame denominado “trabajadores”, que cubre desde el 1 de
enero de 1997 hasta el 30 junio de 1999, con 3 columnas: Identificador (ID), la
fecha de entrada en la empresa (ENT) y la fecha de salida (SAL). Deseo localizar
aquellos trabajadores que, durante dicho periodo, NO han llegado a pasar un 31
de diciembre y un 1 de enero seguidos (cambio de año) como asalariados de la
empresa, para lo cual hago:

 ##  Los
que entran durante 1997 pero no llegan al 1 de enero de 1998

t1 <-
intersect ( trabajadores[trabajadores$ENT==as.Date("1997-01-01"),]$ID
,

 trabajadores[trabajadores$SAL==as.Date("1997-12-31"),]$ID
)

 t2 <-
intersect ( trabajadores[trabajadores$ENT==as.Date("1997-01-01"),]$ID
,

 trabajadores[trabajadores$SAL<as.Date("1997-12-31"),]$ID
)

 t3 <-
intersect ( trabajadores[trabajadores$ENT>as.Date("1997-01-01"),]$ID
,

 trabajadores[trabajadores$SAL==as.Date("1997-12-31"),]$ID
)

 t4 <-
intersect ( trabajadores[trabajadores$ENT>as.Date("1997-01-01"),]$ID
,

 trabajadores[trabajadores$SAL<as.Date("1997-12-31"),]$ID
)

 ##  Los
que entran durante 1998 pero no llegan al 1 de enero de 1999

t5 <-
intersect ( trabajadores[trabajadores$ENT==as.Date("1998-01-01"),]$ID
,

 trabajadores[trabajadores$SAL==as.Date("1998-12-31"),]$ID
)

 t6 <-
intersect (  trabajadores[trabajadores$ENT==as.Date("1998-01-01"),]$ID
,

 trabajadores[trabajadores$SAL<as.Date("1998-12-31"),]$ID
)

 t7 <-
intersect (  trabajadores[trabajadores$ENT>as.Date("1998-01-01"),]$ID
,

 trabajadores[trabajadores$SAL==as.Date("1998-12-31"),]$ID
)

 t8 <-
intersect (  trabajadores[trabajadores$ENT>as.Date("1998-01-01"),]$ID

 trabajadores[trabajadores$SAL<as.Date("1998-12-31"),]$ID
)

 localizados
<- c(t1, t2, t3, t4, t5, t6, t7, t8)

 

¿Existe
alguna forma más eficiente de localizar a los mismos individuos? ¡¡ Muchísimas gracias !!

 		 	   		  
	[[alternative HTML version deleted]]

