2015-04-07 44 views
0

我已經結束了一個數據幀稱爲總,看起來像這樣:如何按行組時,一列具有相同的值

Rpt   Col1 Col2 Col3 
Jim   5  0  4 
Jim   0  8  8 
Charlie  6  7  4 
Jim   6  2  4 
Charlie  5  5  0 

我想行與RPT中相同名稱合併列,以便它看起來像:

Rpt   Col1 Col2 Col3 
    Jim   11  10  16 
    Charlie  11  12  4 

我嘗試使用dplyr但我可能真的不明白的語法正確,所以我嘗試

library(dplyr) 
total2<- total %>% count(Rpt) 

但它給了我一個數列,其並沒有真正似乎算什麼,我想

+0

儘管在答案中提到了解決方案,但我認爲SO社區將通過使用不同措辭提供類似問題以幫助從外部谷歌/空間吸引訪問者而受益。 –

回答

3

嘗試:

aggregate(. ~ Rpt, data = df, FUN = sum) 
     Rpt Col1 Col2 Col3 
1 Charlie 11 12 4 
2  Jim 11 10 16 
+0

絕對是最簡單的。謝謝 –

3

使用data.table

library(data.table) 

total <- data.table(total) 
total[, list(sum(Col1),sum(Col2),sum(Col3)), by=list(Rpt)] 
+0

'setDT(total)[,。(sum(Col1),sum(Col2),sum(Col3)),by = Rpt]'更短 –

5

隨着dplyr可以使用summarise_each例子來計算每列Rpt:

library(dplyr) 
total %>% 
    group_by(Rpt) %>% 
    summarise_each(funs(sum)) 

或者用data.table(比由Pgibas稍微不同的方法):

library(data.table) 
setDT(total)[, lapply(.SD, sum), by = Rpt] 

注意dplyr的count函數用於計算在數據幀中每組的行數。

相關問題