拆除列(简单,但我正在努力!)

时间:2015-05-28 20:07:38

标签: r

我有一个包含3列的数据帧(但这可能更多取决于我带入数据帧的文件数量)所以我创建了一个带有数字代码的最后一列(第4列)告诉我在哪里希望数据取消堆叠(每列包含4组数据,因此我对它们进行了编码)。

我想根据sort列拆开这三列,这样我现在有12列(3列x4组)。

我知道这可能是这样,如此简单,但我无法得到它。

提前致谢!

1 个答案:

答案 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