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

Conditional Sum in using R to create a new data.frame

我想根据以下 data.frame 创建一个包含组 (A,B,C,D,E) 和总消耗量 (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 更大的情况下应用吗? 感谢您的时间! 最佳

假设你的数据框被命名为dat,那么你可以试试这个

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

对于非常大的数据集,

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

或者

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

要对每个组执行 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
# ...