Simplificando (i.e., asumiendo que los días fin de año son los múltiplos de 10):
# datos simulados
dat <- data.frame(id = letters[1:4],
ini = c(1, 15, 15, 11),
fin = c(11, 19, 25, 22))
fin.anno <- 10 * 1:3
# resultado
dat[mapply(function(x,y) ! any(fin.anno %in% x:y), dat$ini, dat$fin),]
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El día 17 de julio de 2014, 17:19, Francisco Javier
<[email protected]> escribió:
>
> 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]]
>
>
> _______________________________________________
> R-help-es mailing list
> [email protected]
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es