📅  最后修改于: 2023-12-03 14:51:07.126000             🧑  作者: Mango
dplyr 是一个广泛使用的 R 库,用于对数据进行整理、处理和汇总。其中,dplyr 提供了多种函数用于对数据进行分组和汇总,本文将介绍如何使用 dplyr 汇总多列。
首先,需要安装和加载 dplyr 库,以便可以使用其中的函数。可以使用如下代码进行安装和加载:
# 安装 dplyr
install.packages("dplyr")
# 加载 dplyr
library(dplyr)
本文使用 iris
数据集作为示例,为了展示如何在 dplyr 中汇总多列,我们需要创建一个数据框。可以使用如下代码进行创建:
# 创建数据框
iris_df <- as.data.frame(iris)
# 查看数据框
head(iris_df)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
数据框中包含 5 列数据,分别为 Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)和 Species(种类)。
dplyr 提供了多种函数用于对数据进行汇总,其中最常用的函数是 group_by()
和 summarize()
。group_by()
函数用于对数据进行分组,summarize()
函数用于对数据进行汇总。
我们可以使用如下代码对 iris 数据集中的 Sepal.Length 和 Sepal.Width 进行汇总:
# 按 Species 分组,汇总 Sepal.Length 和 Sepal.Width
iris_summary <- iris_df %>%
group_by(Species) %>%
summarize(mean_Sepal_Length = mean(Sepal.Length), mean_Sepal_Width = mean(Sepal.Width))
# 查看汇总结果
iris_summary
# A tibble: 3 x 3
Species mean_Sepal_Length mean_Sepal_Width
<fct> <dbl> <dbl>
1 setosa 5.01 3.43
2 versicolor 5.94 2.77
3 virginica 6.59 2.97
上述代码中,我们首先使用 group_by()
函数按 Species 列对数据进行分组,然后使用 summarize()
函数汇总 Sepal.Length 和 Sepal.Width 列,并使用 mean()
函数计算平均值。最后,使用 %>%
运算符将两个函数连接起来,得到最终的汇总结果。
在上述代码中,汇总的列数为 2,分别为 mean_Sepal_Length 和 mean_Sepal_Width。
我们也可以使用如下代码对 iris 数据集中的所有列进行汇总:
# 按 Species 分组,汇总所有列
iris_summary <- iris_df %>%
group_by(Species) %>%
summarize(across(everything(), mean))
# 查看汇总结果
iris_summary
# A tibble: 3 x 5
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
<fct> <dbl> <dbl> <dbl> <dbl>
1 setosa 5.01 3.43 1.46 0.246
2 versicolor 5.94 2.77 4.26 1.33
3 virginica 6.59 2.97 5.55 2.03
在上述代码中,我们使用了 across()
函数对所有列进行汇总,其中 everything()
用于指定汇总所有列。mean()
函数用于计算平均值。最后,使用 %>%
运算符将两个函数连接起来,得到最终的汇总结果。
在上述代码中,汇总的列数为 4,分别为 Sepal.Length、Sepal.Width、Petal.Length 和 Petal.Width。
本文介绍了如何在 R 中使用 dplyr 汇总多列。使用 group_by()
和 summarize()
函数,可以对数据进行灵活的汇总,满足不同情况下的需求。