[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