R语言 如何计算组的总和
在这篇文章中,我们将看到如何在R编程语言中计算按组计算的总和。
演示的数据
# creating data frame
df <- data.frame(Sub = c('Math', 'Math', 'Phy', 'Phy',
'Phy', 'Che', 'Che'),
Marks = c(8, 2, 4, 9, 9, 7, 1),
Add_on = c(3, 1, 9, 4, 7, 8, 2))
# view dataframe
df
输出 。
Sub Marks Add_on
Math 8 3
Math 2 1
Phy 4 9
Phy 9 4
Phy 9 7
Che 7 8
Che 1 2
方法1:使用Base R中的aggregate()方法
aggregate()函数是用来获取各组数据的汇总统计数据的。这些统计数据包括平均值、最小值、总和、最大值等。
语法: aggregate(dataframeaggregate_column, list(dataframegroup_column), FUN)
其中
- dataframe是输入的数据框。
- aggreg_column是数据框架中要聚合的列。
- group_column是要用FUN分组的列。
- FUN代表sum/mean/min/max。
# creating data frame
df <- data.frame(Sub = c('Math', 'Math', 'Phy', 'Phy',
'Phy', 'Che', 'Che'),
Marks = c(8, 2, 4, 9, 9, 7, 1),
Add_on = c(3, 1, 9, 4, 7, 8, 2))
aggregate(dfMarks, list(dfSub), FUN=sum)
aggregate(dfAdd_on, list(dfSub), FUN=sum)
输出 。
Group.1 x
Che 8
Math 10
Phy 22
Group.1 x
Che 10
Math 4
Phy 20
方法2:使用dplyr()包
使用 group_by() 函数,然后使用 summaryise()函数 ,执行适当的操作。
library(dplyr)
df %>%
group_by(Sub) %>%
summarise_at(vars(Marks),
list(name = sum))
输出 。
Sub name
Che 8
Math 10
Phy 22
方法3:使用data.table
data.table软件包来计算一个球队的得分之和。
library(data.table)
# convert data frame to data table
setDT(df)
# find sum of points scored by sub
df[ ,list(sum=sum(Marks)), by=Sub]
输出 。
Sub sum
Math 10
Phy 22
Che 8