这应该很简单,但出于某种原因,我被卡住了。我的数据看起来像
A <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))
B <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))
C <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1))
method1 <- list(A=A,B=B,C=C)
method2 <- list(A=A,B=B,C=C)
biglist <- list(method1, method2)
我想将数据重新格式化为
x y z dataset method
- - - --- -----
1 1 1 A 1
1 0 2 A 1
1 0 3 A 1
1 1 3 A 1
1 1 1 B 1
1 0 2 B 1
1 0 3 B 1
1 1 3 B 1
1 1 1 C 1
1 0 2 C 1
1 0 3 C 1
1 1 3 C 1
1 1 1 A 2
1 0 2 A 2
1 0 3 A 2
1 1 3 A 2
1 1 1 B 2
1 0 2 B 2
...
熔化并不能完全符合我的要求,因为它会折叠我的x / y / z变量标题。
答案 0 :(得分:6)
您的data.frames应该有一个主键,
例如,标识符列或具有唯一值的列 -
否则,你最终会得到x,y,z
几个不相关行中一个点的坐标。
我将假设x
就是这样一个专栏。
您可能还需要在dcast
之后致电melt
,
如果生成的data.frame太垂直。
library(reshape2)
d <- melt(biglist, id.vars="x")
d <- dcast( d, L1 + L2 + x ~ variable )