[R-es] Selección eficiente de individuos

2014-07-17 Por tema Francisco Javier

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$SALas.Date(1997-12-31),]$ID
)

 t3 -
intersect ( trabajadores[trabajadores$ENTas.Date(1997-01-01),]$ID
,

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

 t4 -
intersect ( trabajadores[trabajadores$ENTas.Date(1997-01-01),]$ID
,

 trabajadores[trabajadores$SALas.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$SALas.Date(1998-12-31),]$ID
)

 t7 -
intersect (  trabajadores[trabajadores$ENTas.Date(1998-01-01),]$ID
,

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

 t8 -
intersect (  trabajadores[trabajadores$ENTas.Date(1998-01-01),]$ID

 trabajadores[trabajadores$SALas.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
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Selección eficiente de individuos

2014-07-17 Por tema Carlos J. Gil Bellosta
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
iterado...@hotmail.com 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$SALas.Date(1997-12-31),]$ID
 )

  t3 -
 intersect ( trabajadores[trabajadores$ENTas.Date(1997-01-01),]$ID
 ,

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

  t4 -
 intersect ( trabajadores[trabajadores$ENTas.Date(1997-01-01),]$ID
 ,

  trabajadores[trabajadores$SALas.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$SALas.Date(1998-12-31),]$ID
 )

  t7 -
 intersect (  trabajadores[trabajadores$ENTas.Date(1998-01-01),]$ID
 ,

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

  t8 -
 intersect (  trabajadores[trabajadores$ENTas.Date(1998-01-01),]$ID

  trabajadores[trabajadores$SALas.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
 R-help-es@r-project.org
 https://stat.ethz.ch/mailman/listinfo/r-help-es


___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] [Grupo de Usuarios R Madrid]: Siguiente reunión el 1-julio... (Agenda disponible)...

2014-07-17 Por tema Jose Luis Cañadas Reche
Me pilla un poco lejos de dónde trabajo. ;) Estaría interesado en que 
fuera en Córdoba o Granada. Sé que en Granada hay unos cuantos eRReros 
entre la uni y alguna que otra empresa, y en Málaga también hay unos 
cuantos..


Saludos
El 17/07/14 23:03, Rubén Gómez Antolí escribió:

Hola:

El 02/07/14 a las #4, Jose Luis Cañadas Reche escribió:

[...]
Ya de paso pregunto si alguien está interesado en
hacer  un GIL (Grupo de Interés Local) en Andalucía..

¿En que zona tienes interés?

En Almería no hay muchos eRReros pero alguno que otro estamos.

Salud y Revolución.

Lobo.


___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es