当一列具有相同值时,如何按行分组

时间:2015-04-07 13:23:07

标签: r

我最终得到了一个名为total的数据框,如下所示:

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)

但是它给了我一个单独的计数列,它似乎并不算什么我想要的

3 个答案:

答案 0 :(得分: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函数用于计算数据框中每个组的行数。

答案 1 :(得分:3)

尝试:

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

答案 2 :(得分:3)

使用data.table

的示例
library(data.table)

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