Arrays R:反向整形2';n维数组上的s melt()
我在R中有一个三维数组,我可以在上面使用Arrays R:反向整形2';n维数组上的s melt(),arrays,r,dataframe,reshape2,melt,Arrays,R,Dataframe,Reshape2,Melt,我在R中有一个三维数组,我可以在上面使用melt()生成一个长的数据帧 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
melt()
生成一个长的数据帧
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
对于多维度,您需要更多瓷砖(如果我正确理解您的问题):
要概括此行为,可以尝试使用粘贴构建公式
:
Form <- as.formula(paste(grep("^Var", names(y), value=TRUE),
collapse = " ~ "))
acast(y, Form)
Form…它将剩下的一列作为值。实际上,有一件事:不使用eval()
就可以将它推广到Var1~Var2~…~VarN
?
Form <- as.formula(paste(grep("^Var", names(y), value=TRUE),
collapse = " ~ "))
acast(y, Form)