2014-02-25 80 views
3

我有一個表,看起來像這樣,基於條件的數據幀的單元格添加值

ID c1 c2 c3 c4 
A  23 12 45 63 
A  3  1  6  17 
B  3  1  4  6 
B  2  2  5  3 

,我想有這樣的事情結束了,

ID c1 c2 c3 c4 
A  26 13 51 80 
B  5  3  9  9 

哪裏,每個單元格是映射到相同ID的值的總和。

我想用R.解決這個問題任何想法?我知道,如果想在列中總結所有值,我可以使用colsums,但我不確定如何根據條件對值進行求和。

任何幫助將不勝感激。

Ram

P.S:我的實際表格有45000行和72列。

回答

3

嘗試

aggregate(. ~ ID, data = x, FUN = sum) 

    ID c1 c2 c3 c4 
1 A 26 13 51 80 
2 B 5 3 9 9 
2

plyr

library(plyr) 
ddply(x, .(ID), numcolwise(sum)) 

    ID c1 c2 c3 c4 
1 A 26 13 51 80 
2 B 5 3 9 9 
2

對於一個更快的替代方案的另一種方式:

library(data.table) 
dt = data.table(df) 

dt[, lapply(.SD, sum), by = ID] 
# ID c1 c2 c3 c4 
#1: A 26 13 51 80 
#2: B 5 3 9 9 
相關問題