[R-es] Error al agrupar datos por una variable en data.table (2)

Olivier Nuñez onunez en unex.es
Lun Sep 28 09:29:23 CEST 2015


Ya entiendo tu problema.
A pesar del subset, los niveles originales del factor "padres" siguen en el data.table.
En cualquier caso, el comando .N no se deja afectar por este recuerdo:

> DT=data.table(padres=factor(c(1,1,1,2,2,3,3)), individuos=1:7)
> DT0=subset(DT,padres %in% c(1:2))
> DT0
   padres individuos
1:      1          1
2:      1          2
3:      1          3
4:      2          4
5:      2          5
> summary(DT0)
 padres   individuos
 1:3    Min.   :1   
 2:2    1st Qu.:2   
 3:0    Median :3   
        Mean   :3   
        3rd Qu.:4   
        Max.   :5   
> DT[,.(count=.N),by=padres]
   padres count
1:      1     3
2:      2     2
3:      3     2
> DT0[,.(count=.N),by=padres]
   padres count
1:      1     3
2:      2     2
> 




----- Mensaje original -----
De: "Rodrigo López Correa" <rod99hare en gmail.com>
Para: "R-help-es" <r-help-es en r-project.org>
Enviados: Viernes, 25 de Septiembre 2015 15:48:39
Asunto: [R-es] Error al agrupar datos por una variable en data.table

Hola buenos días, estoy teniendo problemas cuando quiero agrupar los
registros de una tabla por una columna específica en data.table.



*Mi objetivo es agrupar todos los hijos que pertenecen a solo 2 padres
determinados.*



   - Por eso me traje todos sus hijos con subset desde una tabla.





algunos_padres<-data.table(subset(mydata, padres %in% c("0002480",
"0001878") ,

                          select=(c(individuo,padres)),key="individuo"))




   - Para chequear que me haya traído solamente esos padres, busqué si
   tenía el padre “0001458”:



algunos_padres[padres=="0001458",]




   - El resultado fue el esperado, no estaba en la tabla algunos_padres:


Empty data.table (0 rows) of 7 cols #correct no era esperado




   - Sin embargo, acá viene mi problema, cuando le pido contabilizar el
   número de hijos obtenidos por  cada uno de esos 2 padres, el resultado
   trajo también animales que no deberían estar. Por ejemplo, el padre 0001458.



total_hijos<-algunos_padres[, as.data.table(table(padres))]

head (total_hijos)



padres         N

1: 0001458 0

2: 0001512 0

3: 0001518 0

4: 0001519 0

….




   -     Intenté hacerlo de otra manera y obtuve igual resultado:



               xtabs(~padres,data=algunos_padres)



               padres

               0001458 0001512 0001518 0001519 0001683 0001795 0001803
0001878

               0                   0            0           0
         0            0           0               77 ….






   - En definitiva, intenté hacerlo de varias maneras y siempre con el
   mismo resultado, me trae en la estadística  padres que no formaron parte de
   mi subset inicial en algunos_padres, por más que después aparezcan con 0
   hijo en el resultado.






   - Por último probé:



algunos_padres[,count := uniqueN(individuo), by=padres]



pero aquí no me trajo como quiero en 2 lineas, el total de hijos de cada
uno de esos 2 padres. Quizás es redundante poner uniqueN, ya que el campo
individuo tiene registros únicos.







¿Me podrían ayudar? Muchas gracias!



Rodrigo.

	[[alternative HTML version deleted]]

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



Más información sobre la lista de distribución R-help-es