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:
> 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
Wir stellen fest, dass die Daten in der breiten Form vorliegen. Um auf die lange Form zu kommen, machen wir den smiths
Datenrahmen geschmolzen :
> 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
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'
:
> 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
Hier ist ein weiteres Beispiel aus ?cast
:
#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
Wenn wir den geschmolzenen Datenrahmen speichern, können wir werfen in andere Formen. In der neuen Version von reshape
(genannt reshape2
) gibt es Funktionen acast()
und dcast()
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:
> 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
Es gibt wirklich nur zwei Hauptfunktionen in reshape2
: melt()
und das acast()
und dcast()
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.