我想基于以下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? 感谢您的时间! 最好
答案 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
# ...