分析数据时最常见的两个任务是对数据进行分组和汇总。
幸运的是,R 中的dplyr包允许您快速分组和汇总数据。
本教程提供了 dplyr 入门的快速指南。
安装并加载 dplyr 包
在使用 dplyr 包中的函数之前,必须先加载该包:
#install dplyr (if not already installed)
install.packages(' dplyr ')
#load dplyr
library(dplyr)
接下来,我们将说明使用 dplyr 的函数使用名为mtcars的内置 R 数据集对数据进行分组和汇总的几个示例:
#obtain rows and columns of mtcars
dim(mtcars)
[1] 32 11
#view first six rows of mtcars
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
我们将用于分组和汇总数据的基本语法是:
data %>%
group_by (col_name) %>%
summarize (summary_name = summary_function)
注意: summarise() 和 summarise() 函数是等效的。
示例 1:按组查找平均值和中位数
以下代码显示了如何按组计算 集中趋势度量,包括平均值和中位数:
#find mean mpg by cylinder
mtcars %>%
group_by (cyl) %>%
summarize (mean_mpg = mean(mpg, na.rm = TRUE ))
# A tibble: 3 x 2
cyl mean_mpg
1 4 26.7
2 6 19.7
3 8 15.1
#find median mpg by cylinder
mtcars %>%
group_by (cyl) %>%
summarize (median_mpg = median(mpg, na.rm = TRUE ))
# A tibble: 3 x 2
cyl median_mpg
1 4 26
2 6 19.7
3 8 15.2
示例 2:查找按群体传播的度量
以下代码展示了如何按组计算离散度度量,包括标准差、四分位数间距和绝对中值偏差:
#find sd, IQR, and mad by cylinder
mtcars %>%
group_by (cyl) %>%
summarize (sd_mpg = sd(mpg, na.rm = TRUE ),
iqr_mpg = IQR(mpg, na.rm = TRUE ),
mad_mpg = mad(mpg, na.rm = TRUE ))
# A tibble: 3 x 4
cyl sd_mpg iqr_mpg mad_mpg
1 4 4.51 7.60 6.52
2 6 1.45 2.35 1.93
3 8 2.56 1.85 1.56
示例 3:按组查找数字
以下代码显示了如何在 R 中按组查找编号和唯一编号:
#find row count and unique row count by cylinder
mtcars %>%
group_by (cyl) %>%
summarize (count_mpg = n(),
u_count_mpg = n_distinct(mpg))
# A tibble: 3 x 3
cyl count_mpg u_count_mpg
1 4 11 9
2 6 7 6
3 8 14 12
示例 4:按组查找百分位
以下代码显示了如何按气缸组查找 mpg 值的第 90 个百分位:
#find 90th percentile of mpg for each cylinder group
mtcars %>%
group_by (cyl) %>%
summarize (quant90 = quantile(mpg, probs = .9))
# A tibble: 3 x 2
cyl quant90
1 4 32.4
2 6 21.2
3 8 18.3
其他资源
您可以在此处找到完整的 dplyr 包文档以及有用的可视化备忘单。
您可以与group_by()和summary()一起使用的其他有用函数包括过滤数据框的行并按特定顺序排列它们的函数。