我有一个包含3列的数据帧(但这可能更多取决于我带入数据帧的文件数量)所以我创建了一个带有数字代码的最后一列(第4列)告诉我在哪里希望数据取消堆叠(每列包含4组数据,因此我对它们进行了编码)。
我想根据sort列拆开这三列,这样我现在有12列(3列x4组)。
我知道这可能是这样,如此简单,但我无法得到它。
提前致谢!
答案 0 :(得分:0)
可以使用reshape()
:
df <- cbind(matrix(1:24,8,dimnames=list(NULL,c(letters[1:3]))),code=rep(1:4,each=2));
df;
## a b c code
## [1,] 1 9 17 1
## [2,] 2 10 18 1
## [3,] 3 11 19 2
## [4,] 4 12 20 2
## [5,] 5 13 21 3
## [6,] 6 14 22 3
## [7,] 7 15 23 4
## [8,] 8 16 24 4
reshape(transform(df,id=ave(code,code,FUN=seq_along)),dir='w',timevar='code')[-1];
## a.1 b.1 c.1 a.2 b.2 c.2 a.3 b.3 c.3 a.4 b.4 c.4
## 1 1 9 17 3 11 19 5 13 21 7 15 23
## 2 2 10 18 4 12 20 6 14 22 8 16 24