Ich versuche, einen Datenrahmen von "Wide" -Format zu "Long" -Format in R zu schmelzen, mit der Funktion 'schmelzen' im Paket 'reshape2'. Allerdings habe ich ein Problem mit Dimensionen, wenn ich versuche, den Ausgabedatenrahmen zu sehen, bei dem ich Schwierigkeiten habe zu entziffern. Hier ein Beispiel:Dimension Mismatch mit Schmelze() in reshape2
# load reshape2 package
require(reshape2)
# sample data frame generated using dput
df <- structure(list(year = c(2001, 2002, 2003, 2004),
aet = structure(c(493.1, 407.1, 476.7, 501.6), .Dim = 4L),
drainage = structure(c(5.4, 5.4, 5.4, 5.4), .Dim = 4L),
srunoff = structure(c(25.6, 24.3, 56.0, 50.3), .Dim = 4L)),
.Names = c("year", "aet", "drainage", "srunoff"), row.names = c(NA, 4L), class = "data.frame")
# if i melt without specifying id.vars, it provides a warning but works works fine
df.melt <- melt(df)
# check output
head(df.melt)
# view output
View(df.melt)
# this works fine, and the data frame is visible in RStudio
# now, melt while supplying year as an id variable
df.melt.id <- melt(df, id.vars="year")
# check output
head(df.melt.id)
# the first 6 lines of output print to the console menu, as normal
# view output
View(df.melt.id)
Allerdings, wenn ich versuche, den df.melt.id Datenrahmen zu sehen, bekomme ich folgende Fehlermeldung:
Error in FUN(X[[i]], ...) :
dims [product 4] do not match the length of object [12]
4 entspricht die ursprüngliche Länge der Daten Rahmen und 12 ist wie lange es sein sollte. Wenn ich die Maße unter Verwendung dim(df.melt.id)
überprüfe, gibt es die passende Größe zurück: [1] 12 3
Irgendwelche Ideen auf, was hier geschieht? Ich habe versucht, reshape2 neu zu installieren und das hat nicht geholfen ...
Wenn Sie an der 'str aussehen (df.melt.id)', irgendwie Die Spalte "Wert" wurde zu einem Array. Wenn Sie es auf numerisch erzwingen, ist es in Ordnung, aber das Verhalten scheint ziemlich fehlerhaft. – alistaire
Es ist eine 'Umgestaltung2' Sache; 'reshape :: melt.data.frame' funktioniert gut. – alistaire
Seltsam! Ja, "reshape" funktioniert sowohl in diesem Beispiel als auch in meinem ursprünglichen, größeren Datenrahmen. Danke für die schnelle Hilfe. –