Le site Web de Hadley Wickham contient plusieurs ressources sur le paquet (maintenant appelé reshape2
), y compris un lien vers un article sur le paquet dans le Journal of Statistical Software.
Voici un bref exemple tiré du papier:
> 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
Nous notons que les données sont au format large. Pour aller à la forme longue, nous rendons le smiths
bloc de données fondu :
> 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
Remarquez comment vous avez melt()
choisi l'une des variables comme id, mais nous pouvons indiquer explicitement laquelle utiliser via un argument '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
Voici un autre exemple tiré de ?cast
:
#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
Si nous enregistrons la trame de données en fusion, nous pouvons jeter dans d' autres formes. Dans la nouvelle version reshape
(appelé reshape2
) il existe des fonctions acast()
et dcast()
renvoyer un résultat semblable à un tableau (tableau, matrice, vecteur) ou une trame de données respectivement. Ces fonctions prennent également une fonction d'agrégation (par exemple mean()
) pour fournir des résumés de données sous forme fondue. Par exemple, à la suite de l'exemple de la qualité de l'air ci-dessus, nous pouvons générer, sous forme large, des valeurs moyennes mensuelles pour les variables de l'ensemble de données:
> 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
Il n'y a vraiment que deux fonctions principales reshape2
: melt()
et acast()
et dcast()
appariement. Regardez les exemples dans les pages d'aide pour ces deux fonctions, consultez le site Web de Hadley (lien ci-dessus) et consultez le document que j'ai mentionné. Cela devrait vous aider à démarrer.
Vous pouvez également regarder dans le plyr
paquet de Hadley qui fait des choses similaires reshape2
mais qui est conçu pour en faire beaucoup plus.