Poniendo las fechas de entrada y salida en año (%Y) y calculando la diferencia D entre estas fechas , se obtiene un criterio sencillo : si Dâ§1, el asalariado experimentó un cambio de año en la empresa. Un saludo. Olivier
On 17 de julio de 2014 18:42:56 CEST, "Carlos J. Gil Bellosta " <[email protected]> wrote: >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 -- Enviado desde mi teléfono con K-9 Mail. [[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
