使用 dplyr 进行聚合
Coddy R 中的数据处理 课程的第 7 课,共 14 课。
聚合数据是数据分析中的关键步骤,可以帮助你汇总数据集并从中获取见解。R 中的 dplyr 包提供了强大的数据聚合函数,尤其是 group_by() 和 summarize()。下面来看看如何有效地使用这些函数。
group_by() 函数
group_by() 函数可以根据一个或多个变量对数据进行分组。这通常是数据聚合的第一步。
# 示例数据框
df <- data.frame(
category = c("A", "B", "A", "B", "A"),
value = c(10, 15, 20, 25, 30)
)
# 按 category 对数据分组
grouped_df <- group_by(df, category)
print(grouped_df)输出:
# 一个 tibble:5 × 2
# 分组:category [2]
category value
<chr> <dbl>
1 A 10
2 B 15
3 A 20
4 B 25
5 A 30summarize() 函数
分组后,使用 summarize() 为每个组计算汇总统计数据。
# 计算每个类别的平均值
result <- summarize(grouped_df, mean_value = mean(value))
print(result)输出:
# A tibble: 2 × 2
category mean_value
<chr> <dbl>
1 A 20
2 B 20组合使用 group_by() 和 summarize()
你可以使用管道运算符 %>% 将这些函数串联起来,让代码更易读:
result <- df %>%
group_by(category) %>%
summarize(mean_value = mean(value),
sum_value = sum(value),
count = n())
print(result)输出:
# A tibble: 2 × 4
category mean_value sum_value count
<chr> <dbl> <dbl> <int>
1 A 20 60 3
2 B 20 40 2多种汇总统计数据
你可以在一次 summarize() 调用中计算多种统计数据:
result <- df %>%
group_by(category) %>%
summarize(
mean_value = mean(value),
min_value = min(value),
max_value = max(value),
count = n()
)
print(result)输出:
# A tibble: 2 × 5
category mean_value min_value max_value count
<chr> <dbl> <dbl> <dbl> <int>
1 A 20 10 30 3
2 B 20 15 25 2这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
挑战
中等使用 dplyr 函数创建一个处理销售数据的函数。该函数应执行以下操作:
- 按产品类别对数据分组
- 计算每个组的以下汇总统计信息:
- 总销售额
- 平均价格
- 售出的商品数量
- 按总销售额降序排列结果
- 返回处理后的数据框
打印生成的数据框。
亲手试试
# 读取输入
con <- file("stdin", "r")
input_data <- suppressWarnings(readLines(con))
# 将输入字符串转换为数据框
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(readr))
sales_data <- read.csv(paste(input_data, collapse = "\n"))
# TODO: 在下方编写代码,处理销售数据
# 提示:使用 dplyr 函数,例如 group_by()、summarize()、arrange()、desc()
process_sales_data <- function(data) {
# 在这里编写代码
# 返回处理后的数据框
return(data)
}
# 处理销售数据
result <- process_sales_data(sales_data)
# 打印结果
print(result)R 中的数据处理中的所有课
自己练习: R 在线编译器