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 smithsbloc 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 plyrpaquet de Hadley qui fait des choses similaires reshape2mais qui est conçu pour en faire beaucoup plus.