Skip to content

[R-es] Pivot tables con data.table

5 messages · Fernando Macedo, Carlos J. Gil Bellosta, Carlos Ortega +1 more

#
Buenas, estoy intentando hacer una especie de pivot tables con 
data.table pero no logro que me salga.

Este código refleja un poco lo que quiero


library(data.table)
set.seed(1234)
DT <- data.table(x=rep(c(1,2,3),each=30),
                  y=letters[sample(1:3,30,replace = T,)],
                  v=sample(1:100,30))
out <- DT[,list(N=.N),by=list(x,y)]

Eso genera una salida como esta:

      x y  N
1: 1 a  8
2: 1 b 10
3: 1 c 12
4: 2 a  8
5: 2 b 10
6: 2 c 12
7: 3 a  8
8: 3 b 10
9: 3 c 12


Que esta bien, pero lo que me interesa a mi es sacar una tabla con la 
siguiente estructura:

x  a b c
1 8 10 12
2 8 10 12
  ...

y así. Porque después quiero hacer frecuencias y me resulta más fácil 
para armar columnas de frecuencias seguidas de esas y queda mejor para 
presentar los datos también.

La verdad que he buscado pero no logro dar con la tecla de hacerlo en un 
solo paso en data.table, o de repente no la hay.

  Desde ya agradezco su ayuda.
Saludos!
#
reshape2 + dcast

El día 3 de septiembre de 2016, 19:23, Fernando Macedo
<fermace en gmail.com> escribió:
#
Muchas gracias, pensaba hacerlo en una sola línea pero no anda.
Me quedo con dcast así no tengo que cargar más paquetes.

Un abrazo!

Fernando Macedo

El 03/09/16 a las 14:26, Carlos J. Gil Bellosta escribió:
#
Hola,

"dcast" también es función de data.table...
Using 'v' as value column. Use 'value.var' to override
Aggregate function missing, defaulting to 'length'
   x  a b c
1: 1 15 8 7
2: 2 15 8 7
3: 3 15 8 7

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 3 de septiembre de 2016, 21:19, Fernando Macedo <fermace en gmail.com>
escribió:

  
    
1 day later