使用 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
# ...
我想根据以下 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
# ...