[R-es] Error al agrupar datos por una variable en data.table (2)
Rodrigo López Correa
rod99hare en gmail.com
Vie Oct 2 13:38:34 CEST 2015
Gracias Olivier! es exacto eso que tú mencionas el problema que tenía.
Saludos,
Rodrigo.
El 28 de septiembre de 2015, 4:29, Olivier Nuñez <onunez en unex.es> escribió:
> 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
>
--
*Dr. Rodrigo López Correa.*
Miguel Barreiro 3186.
Montevideo.
Uruguay.
Cel: 099 660 549.
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es