Hay varios recursos en el sitio web de Hadley Wickham para el paquete (ahora llamado reshape2
), incluido un enlace a un documento sobre el paquete en el Journal of Statistical Software.
Aquí hay un breve ejemplo del artículo:
> require(reshape2)
Loading required package: reshape2
> data(smiths)
> smiths
subject time age weight height
1 John Smith 1 33 90 1.87
2 Mary Smith 1 NA NA 1.54
Observamos que los datos están en forma amplia. Para ir a la forma larga, hacemos que el smiths
marco de datos esté fundido :
> melt(smiths)
Using subject as id variables
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight NA
7 John Smith height 1.87
8 Mary Smith height 1.54
Observe cómo melt()
eligió una de las variables como id, pero podemos establecer explícitamente cuál usar mediante un argumento 'id'
:
> melt(smiths, id = "subject")
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight NA
7 John Smith height 1.87
8 Mary Smith height 1.54
Aquí hay otro ejemplo de ?cast
:
#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
Si almacenamos el marco de datos fundido, podemos convertirlo en otras formas. En la nueva versión de reshape
(llamado reshape2
) hay funciones acast()
y dcast()
devuelve un resultado tipo matriz (matriz, matriz, vector) o un marco de datos respectivamente. Estas funciones también tienen una función de agregación (por ejemplo mean()
) para proporcionar resúmenes de datos en forma fundida. Por ejemplo, siguiendo el ejemplo anterior de Calidad del aire, podemos generar, en forma amplia, valores medios mensuales para las variables en el conjunto de datos:
> dcast(aqm, month ~ variable, mean)
month ozone solar.r wind temp
1 5 23.61538 181.2963 11.622581 65.54839
2 6 29.44444 190.1667 10.266667 79.10000
3 7 59.11538 216.4839 8.941935 83.90323
4 8 59.96154 171.8571 8.793548 83.96774
5 9 31.44828 167.4333 10.180000 76.90000
En realidad, hay sólo dos funciones principales en reshape2
: melt()
y el acast()
y dcast()
el emparejamiento. Mire los ejemplos en las páginas de ayuda para estas dos funciones, vea el sitio web de Hadley (enlace arriba) y mire el documento que mencioné. Eso debería ayudarte a comenzar.
También puede consultar el plyr
paquete de Hadley que hace cosas similares reshape2
pero está diseñado para hacer mucho más.