Vous pouvez avoir des données en format large ou en format long. C'est une chose assez importante, car les méthodes utilisables sont différentes, en fonction du format. Je sais que vous devez travailler avec melt()
et à cast()
partir du package de remodelage, mais il semble que certaines choses ne me soient pas parvenues.
Quelqu'un peut-il me donner un bref aperçu de la façon dont vous faites cela?
melt
etcast
. Là, la conversion du format large au format long se fait en une étape. Il n'y a vraiment rien de plus spécial.Réponses:
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:
Nous notons que les données sont au format large. Pour aller à la forme longue, nous rendons le
smiths
bloc de données fondu :Remarquez comment vous avez
melt()
choisi l'une des variables comme id, mais nous pouvons indiquer explicitement laquelle utiliser via un argument'id'
:Voici un autre exemple tiré de
?cast
: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 fonctionsacast()
etdcast()
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 exemplemean()
) 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:Il n'y a vraiment que deux fonctions principales
reshape2
:melt()
etacast()
etdcast()
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 similairesreshape2
mais qui est conçu pour en faire beaucoup plus.la source
dcast(aqm, month ~ variable)
, qu'est-ce que cela ferait sans la fonction d'agrégation??dcast
ce qui vous l'aurait dit (voir les détails de l'argumentfun.aggregate
).Quick-R a un exemple simple d'utilisation du paquetage reshape
Voir également
?reshape
( LINK ) la manière dont la Base R permet de passer du format large au format long.la source
Vous n'êtes pas obligé d'utiliser
melt
etcast
.Le remodelage des données peut être effectué de nombreuses manières. Dans votre exemple particulier sur votre cite, utiliser
recast
avecaggregate
était redondant caraggregate
la tâche vous convient parfaitement toute seule.J'aime bien comment, dans ton blog, tu expliques ce qui
melt
se passe. Très peu de gens comprennent cela et une fois que vous le voyez, il devient plus facile de voir comment celacast
fonctionne et comment vous pourriez écrire vos propres fonctions si vous le souhaitez.la source
Voir le wiki reshape2 . Il fournit sûrement plus d'exemples que vous pourriez attendre.
la source
Notant juste qu'il n'y a aucune référence aux méthodes de remodelage plus efficaces et plus complètes
data.table
ici, je poste donc sans autre commentaire l'excellente réponse de Zach / Arun sur StackOverflow pour une question similaire:https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151
Et notamment la merveilleuse vignette sur la
data.table
page GitHub:https://github.com/Rdatatable/data.table/wiki/Getting-started
la source