Einfachere Methode zum Wiederherstellen eines geschmolzenen Datenrahmens zum Original

Wie erstelle ich einedata.frame mit dem ich geschmolzen binreshape2?

Reproduzierbares Beispiel

library(reshape2)
library(plyr)
data(iris)
df  <- melt(iris, id.vars="Species")
head(df)
  Species     variable value
1  setosa Sepal.Length   5.1
2  setosa Sepal.Length   4.9
3  setosa Sepal.Length   4.7
4  setosa Sepal.Length   4.6
5  setosa Sepal.Length   5.0
6  setosa Sepal.Length   5.4
# Great, I'd like to get the original iris back

Womit ich es versucht habedcast

  dcast(df, Species~variable, value.var = "value")
    # should work but doesn't

vorübergehende Lösung

# This works but clearly it shouldn't be this hard.
ddply(df, .(Species), function(x) {
    Species <- unique(x$Species)
    x$id <- 1:dim(x)[1]
    x$Species <- NULL
    dat <- unstack(x, value~variable)
    dat$Species <- Species
    return(dat)
    })

Was vermisse ich? Es ist etwas Offensichtliches, aber ich kann die Antwort nicht herausfinden. Vielleicht habe ich es schon einmal für jemanden hier beantwortet. argh.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage