折叠列

时间:2013-12-05 17:41:57

标签: r merge

我有一个数据框:

a   b   c
1   1   40
1   2   50
2   1   45
2   2   55

如何按列折叠? 期望的输出:

a   b   c       c.b1    c.b2
1   1   40      40      50
1   2   50      40      50
2   1   45      45      55
2   2   55      45      55

我想我可以以某种方式合并,但不断丢失数据并让NA从另一方出来

1 个答案:

答案 0 :(得分:1)

也许:

 dfrm$c.b1 <- ave(dfrm$c, dfrm$a, FUN=function(x) x[1])
 # returns [1] 40 40 45 45
 dfrm$c.b2 <- ave(dfrm$c, dfrm$a, FUN=function(x) x[2])
 # returns [1] 50 50 55 55

请注意,索引因子是获取结果的“a”列(而不是与标签一致)。如果事实证明您有一个更复杂的问题,那么应该修改您的数据示例以说明真正的问题可能是什么。