📜  如何在R中按组计算总和?(1)

📅  最后修改于: 2023-12-03 15:38:37.543000             🧑  作者: Mango

如何在R中按组计算总和?

在数据分析中,我们经常需要按组计算总和,例如计算一组人的总收入或总开销。在R中,可以用几个不同的函数来实现按组计算总和,下面将介绍其中的几个。

使用base R的aggregate函数

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包

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包

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。