Menu
CoddyTech

使用 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           30

summarize() 函数

分组后,使用 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

中等

使用 dplyr 函数创建一个处理销售数据的函数。该函数应执行以下操作:

  1. 按产品类别对数据分组
  2. 计算每个组的以下汇总统计信息:
    • 总销售额
    • 平均价格
    • 售出的商品数量
  3. 按总销售额降序排列结果
  4. 返回处理后的数据框

打印生成的数据框。

亲手试试

# 读取输入
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 在线编译器