[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