0

melt()long を生成するために使用できる R の 3 次元配列がありますdata.frame

library(abind)
library(reshape2)
a = matrix(1:4, nrow=2, ncol=2)
x = abind(a, a, along=3)
y = melt(x)
y

これにより、次の結果が得られます。

  Var1 Var2 Var3 value
1    1    1    1     1
2    2    1    1     2
3    1    2    1     3
4    2    2    1     4
5    1    1    2     1
6    2    1    2     2
7    1    2    2     3
8    2    2    2     4

データを元の配列に戻すにはどうすればよいですか? で動作するはずacastですが、適切な引数が見つかりません:

y['idx'] = rownames(y)
acast(y, idx~Var1+Var2+Var3, value.var='value') # does not work this way
4

1 に答える 1

2

複数の次元の場合、さらにチルダが必要です (質問を正しく理解した場合)。

acast(y, Var1 ~ Var2 ~ Var3)
# , , 1
# 
#   1 2
# 1 1 3
# 2 2 4
# 
# , , 2
# 
#   1 2
# 1 1 3
# 2 2 4

この動作を一般化するには、formulawith を構築してみてくださいpaste:

Form <- as.formula(paste(grep("^Var", names(y), value=TRUE), 
                         collapse = " ~ "))
acast(y, Form)
于 2014-05-08T16:14:26.317 に答える