2013-04-10 32 views
13

你好,謝謝你提前爲您的幫助,[R編程 - 與普通行之和元素的值

(請注意,額外的洞察力註釋部分:即在下面加入到這個問題的例子成本列; Simon提供了一個很好的答案,但是成本列本身在他的數據響應中沒有表示,儘管他提供的功能與成本列一起工作)

我有一個數據集,可以稱之爲'data'看起來是這樣的

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(數據),但我不完全確定如何使用它。任何幫助將不勝感激。

回答

21

aggregate是您正在尋找的功能:

aggregate(cbind(PAID , COST) ~ NAME + COLOR , data = data , FUN = sum) 
# NAME PAID 
# 1 Jim 200 
# 2 Joe 225 
+0

謝謝西蒙。對此,我真的非常感激。我想知道是否有任何方法來保留聚合中每個這些行的「COLOR」字段。 – 2013-04-10 19:04:15

+0

好的,我會更新答案。你所有的色域對每個人都一樣嗎?如果不是你想要最常見的? – 2013-04-10 19:05:04

+0

因此,對於每個人來說,他們的所有顏色將通過記錄保持不變。例如,吉姆總是有綠色,而喬可能有紅色,但喬的記錄總是紅色。 這個問題的最後一個方面。如果除了PAID(即COST)之外還有另一個數字數據字段,我怎樣才能以同樣的方式對該字段進行求和? 非常感謝。 – 2013-04-10 19:07:28