【问题标题】:Unstacking columns (simple but I am struggling!)拆柱(很简单,但我很挣扎!)
【发布时间】:2015-05-28 20:07:38
【问题描述】:

我有一个包含 3 列的数据框(但这可能更多取决于我带入数据框的文件数量),因此我创建了最后一列(第 4 列),其中包含一个数字代码来告诉我我在哪里希望数据未堆叠(每列包含 4 组数据,因此我将它们编码为这样)。

我想根据排序列解开这三列,这样我现在就有了 12 列(3 列 x 4 组)。

我知道这可能就是这么简单,但我就是不明白。

提前致谢!

【问题讨论】:

  • 看起来您在数据框中有一些列表。如果您可以在此基础上展示一些示例和预期结果,那就更容易了
  • df = do.call(cbind, split(df[,-ncol(df)], df$NameOfColumn4Here)) 沿着这些思路工作。

标签: r


【解决方案1】:

这可以通过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

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2011-02-27
    • 2021-02-08
    相关资源
    最近更新 更多