📅  最后修改于: 2023-12-03 15:38:37.543000             🧑  作者: Mango
在数据分析中,我们经常需要按组计算总和,例如计算一组人的总收入或总开销。在R中,可以用几个不同的函数来实现按组计算总和,下面将介绍其中的几个。
aggregate()
是R中用于按组计算总和的一种基本函数。它需要指定数据、按照哪个变量分组,以及对哪个变量进行总和计算。下面是一个示例:
# 创建一个包含姓名、性别和收入的数据框
income <- data.frame(name = c("Alice", "Bob", "Charlie", "Dave"),
gender = c("F", "M", "M", "M"),
income = c(25000, 30000, 35000, 40000))
# 按性别计算收入总和
agg <- aggregate(income$income, by = list(income$gender), FUN = sum)
agg
在上面的代码中,我们首先创建了一个包含收入信息的数据框 income
,然后使用 aggregate()
函数按照 gender
变量进行分组,并对 income
变量进行总和计算。
输出结果如下:
Group.1 x
1 F 25000
2 M 105000
说明男性总收入为105000,女性总收入为25000。
dplyr
是一个用于数据处理的流行R包,它提供了许多方便的函数进行数据操作。下面是一个使用 dplyr
包,按照性别计算收入总和的示例:
library(dplyr)
# 创建一个包含姓名、性别和收入的数据框
income <- data.frame(name = c("Alice", "Bob", "Charlie", "Dave"),
gender = c("F", "M", "M", "M"),
income = c(25000, 30000, 35000, 40000))
# 使用dplyr计算收入总和
agg <- income %>%
group_by(gender) %>%
summarise(total_income = sum(income))
agg
在上面的代码中,我们使用了 dplyr
包中的 group_by()
函数对数据进行分组,然后用 summarise()
函数计算每个组的收入总和。
输出结果如下:
# A tibble: 2 x 2
gender total_income
<chr> <dbl>
1 F 25000
2 M 105000
同样,输出结果也是男性总收入为105000,女性总收入为25000。
data.table
是另一个流行的R包,可以处理大型数据集。这个包的 data.table()
数据结构提供了快速、简单、灵活和直观的数据汇总方式。下面是一个使用 data.table
包,按照性别计算收入总和的示例:
library(data.table)
# 创建一个包含姓名、性别和收入的数据框
income <- data.frame(name = c("Alice", "Bob", "Charlie", "Dave"),
gender = c("F", "M", "M", "M"),
income = c(25000, 30000, 35000, 40000))
# 使用data.table计算收入总和
income_dt <- data.table(income)
agg <- income_dt[, .(total_income = sum(income)), by = gender]
agg
在上面的代码中,我们首先将数据框转换为 data.table
,然后使用 by = gender
按照 gender
变量分组,最后使用 .()
来定义计算总和的操作。
输出结果如下:
gender total_income
1: F 25000
2: M 105000
同样,输出结果也是男性总收入为105000,女性总收入为25000。