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

Responder a