Hay varios recursos en la página web de Hadley Wickham sitio web para el paquete (ahora llamado reshape2
), incluyendo un enlace a un papel sobre el paquete en el Journal of Statistical Software.
He aquí un breve ejemplo del documento:
> 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 la forma amplia. Para pasar a la forma larga, hacemos el smiths
marco de datos 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 indicar explícitamente cuál utilizar mediante el 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
Este es 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 fundición en otras formas. En la nueva versión de reshape
(llamado reshape2
) hay funciones acast()
y dcast()
devolviendo un resultado tipo array (matriz, vector) o un marco de datos respectivamente. Estas funciones también toman una función de agregación (por ejemplo mean()
) para proporcionar resúmenes de datos en forma fundida. Por ejemplo, siguiendo con el ejemplo de la calidad del aire anterior, podemos generar, en forma amplia, los valores medios mensuales de las variables del 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 sólo hay dos funciones principales en reshape2
: melt()
y el acast()
y dcast()
emparejamiento. Mira los ejemplos en las páginas de ayuda de estas dos funciones, consulta el sitio web de Hadley (enlace anterior) y mira el documento que he mencionado. Eso debería servirte para empezar.
También puede buscar en Hadley's plyr
paquete que hace cosas similares a reshape2
pero está diseñado para hacer mucho más.
0 votos
Por favor, facilite el ejemplo de lo que quiere conseguir. ¿Qué es exactamente lo que no consigue?
3 votos
Aquí está la entrada de mi blog con ejemplo de uso
melt
ycast
. La conversión del formato ancho al largo se realiza en una sola etapa. Realmente no hay nada más especial.0 votos
Bienvenido a las estadísticas. Quizá te ayude incluir en tu pregunta un pequeño conjunto de datos reproducibles para explicar lo que quieres. Lea sigmafield.org/2011/01/18/… para más.
0 votos
Ver esta pregunta del SO para muchas formas de hacerlo.