使用R创建新data.frame的条件求和

时间:2015-03-24 15:08:14

标签: r sum dataframe conditional

我想基于以下data.frame创建一个包含Group(A,B,C,D,E)和Total consume(Totalcons)的新数据框。

  id group consumption
1   1     A  100
2   2     A  210
3   3     B  300
4   4     B  214
5   5     C  254
6   6     C  124
7   7     D  145
8   8     D  652
9   9     E  245
10 10     E  150

如何根据每组计算消费总和?实际上,我必须使用包含数千个组的更大的data.frame,所以这仅仅是例如。有人能告诉我如何在R程序中执行此操作并应用于更大的data.frame? 感谢您的时间! 最好

3 个答案:

答案 0 :(得分:3)

假设您的数据框名为dat,那么您可以尝试使用

with(dat, tapply(consumption, group, sum))

答案 1 :(得分:3)

对于非常大的数据集,

library(data.table)
setDT(df1)[, list(consumption=sum(consumption)), by=group]

或者

library(dplyr)
df1 %>%
  group_by(group) %>%
  summarise(consumption= sum(consumption))

答案 2 :(得分:1)

要为每个群组sum做一次,你也可以使用ave(不是最有效的解决方案,而是替代方案!):

set.seed(32)
df = data.frame(group=rep(letters, 10000), consumption=rnorm(260000))

summary = data.frame(
    letters = letters,
    sum     = with(df, ave(consumption, group, FUN=sum))[1:26]
)
#   letters         sum
#1        a    3.485019
#2        b   77.740427
#3        c  -22.349616
#4        d   94.100463
#5        e  -98.697508
# ...