Sie können Daten im Breit- oder Langformat haben. Dies ist sehr wichtig, da die verwendbaren Methoden je nach Format unterschiedlich sind. Ich weiß, dass Sie mit melt()
und cast()
aus dem Umgestaltungspaket arbeiten müssen, aber es scheint einige Dinge zu geben, die ich nicht verstehe.
Kann mir jemand einen kurzen Überblick geben, wie Sie das machen?
data-transformation
r
Miene
quelle
quelle
melt
undcast
. Dort erfolgt die Konvertierung von Breit- in Langformat in einem Schritt. Es gibt wirklich nichts Besonderes.Antworten:
Auf der Website von Hadley Wickham finden Sie mehrere Ressourcen für das Paket (jetzt genannt
reshape2
), einschließlich eines Links zu einem Artikel über das Paket im Journal of Statistical Software.Hier ist ein kurzes Beispiel aus dem Papier:
Wir stellen fest, dass die Daten in der breiten Form vorliegen. Um auf die lange Form zu kommen, machen wir den
smiths
Datenrahmen geschmolzen :Beachten Sie, wie
melt()
eine der Variablen als ID ausgewählt wurde, wir können jedoch explizit angeben, welche Variable über das Argument verwendet werden soll'id'
:Hier ist ein weiteres Beispiel aus
?cast
:Wenn wir den geschmolzenen Datenrahmen speichern, können wir werfen in andere Formen. In der neuen Version von
reshape
(genanntreshape2
) gibt es Funktionenacast()
unddcast()
Rückkehr ein Array-like (Array, Matrix - Vektor) Ergebnis bzw. einen Datenrahmen. Diese Funktionen übernehmen auch eine Aggregationsfunktion (z. B.mean()
), um Zusammenfassungen von Daten in geschmolzener Form bereitzustellen. In Anlehnung an das obige Beispiel für die Luftqualität können wir beispielsweise in breiter Form monatliche Mittelwerte für die Variablen im Datensatz generieren:Es gibt wirklich nur zwei Hauptfunktionen in
reshape2
:melt()
und dasacast()
unddcast()
Pairing. Schauen Sie sich die Beispiele auf den Hilfeseiten für diese beiden Funktionen an, besuchen Sie die Hadley-Website (Link oben) und schauen Sie sich das erwähnte Dokument an. Damit solltest du anfangen.Sie könnten auch in Hadleys
plyr
Paket schauen , das ähnliche Dinge macht,reshape2
aber dafür konzipiert ist, noch viel mehr zu tun.quelle
dcast(aqm, month ~ variable)
Was würde dies ohne die Aggregationsfunktion tun??dcast
was Ihnen das gesagt hätte (siehe die Details für das Argumentfun.aggregate
).Quick-R hat ein einfaches Beispiel für die Verwendung eines Umformpakets
Siehe auch
?reshape
( LINK ) für die Base R-Methode zum Wechseln zwischen Breit- und Langformat.quelle
Sie müssen nicht verwenden
melt
undcast
.Das Umformen von Daten kann auf viele Arten erfolgen. In Ihrem speziellen Beispiel auf Ihrer Website
recast
mitaggregate
überflüssig, daaggregate
die Aufgabe von sich aus in Ordnung ist.Mir gefällt, wie Sie in Ihrem Blogbeitrag erklären, was zu
melt
tun ist. Sehr wenige Leute verstehen das und sobald Sie es sehen, wird es einfacher zu sehen, wie escast
funktioniert und wie Sie Ihre eigenen Funktionen schreiben können, wenn Sie möchten.quelle
Siehe das reshape2-Wiki . Es bietet sicherlich mehr Beispiele, als Sie erwarten könnten.
quelle
data.table
Ich stelle nur fest, dass es hier keinen Hinweis auf die effizienteren und umfassenderen Umformungsmethoden gibt. Deshalb poste ich ohne weiteren Kommentar die ausgezeichnete Antwort von Zach / Arun auf StackOverflow für eine ähnliche Frage:https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151
Und insbesondere gibt es die wunderbare Vignette auf der
data.table
GitHub-Seite:https://github.com/Rdatatable/data.table/wiki/Getting-started
quelle