14

您好,提前感谢您的帮助,

(请注意评论部分以获得更多见解:即,以下示例中的成本列已添加到此问题中;西蒙提供了一个很好的答案,但成本列本身并未在他的数据响应中表示,尽管他提供的功能与成本列一起使用)

我有一个数据集,我们称之为“数据”,看起来像这样

NAME     DATE     COLOR   PAID    COST
Jim      1/1/2013 GREEN   150     100
Jim      1/2/2013 GREEN   50      25
Joe      1/1/2013 GREEN   200     150
Joe      1/2/2013 GREEN   25      10

我想做的是将具有相同 NAME 值的记录的 PAID(和 COST)元素相加,并将行数(如本例中)减少到 2,这样我的新数据框如下所示:

NAME     DATE     COLOR   PAID    COST
Jim      1/2/2013 GREEN   200     125
Joe      1/2/2013 GREEN   225     160

就日期而言,我并不真正关心哪一个在求和过程中幸存下来。

我已经了解了 rowSums(data),但我不确定如何使用它。任何帮助将不胜感激。

4

1 回答 1

21

aggregate是您正在寻找的功能:

aggregate( cbind( PAID , COST ) ~ NAME + COLOR , data = data , FUN = sum )
# NAME PAID
# 1  Jim  200
# 2  Joe  225
于 2013-04-10T18:58:11.733 回答