5
reshape2
で溶けたdata.frame
をどのように作り直すのですか?溶融したデータフレームを元に戻す簡単な方法
再現例
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
私はdcast
dcast(df, Species~variable, value.var = "value")
# should work but doesn't
一時的な解決策を試してみた何
# 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)
})
私は何が欠けていますか?明らかなことですが、答えを理解することはできません。私は前に他の誰かのためにそれに答えているかもしれません。アー。
サンプルの出力に基づいて、 'measure.vars'ではなく' id.vars'を使うつもりだったと思います。また、あなたが見ているアウトプットをデフォルトにしているかもしれないあなたの呼び出しのタイプミスに注意してください。 –
うん、あなたは私の間違いをキャッチした。ありがとう@RicardoSaporta – Maiasaura
問題は、変数の組み合わせ*が行*を一意に特定しないということです(すべての組み合わせに対して複数の値があるので、この場合は 'fun.aggregate'を使用する必要があります。 '?dcast'からの' aggregate'の説明です。代わりに 'unstack(df、value〜variable)'を使用し、 'cbind'" Species "を使ってこの結果にすることができます..? – Arun