You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中基于列名聚合表格行:去重与多聚合操作实现问题

处理网页访问数据的去重与聚合需求

需求说明

  • 按yearMonth和page列分组去重
  • 对users和sessions列执行求和操作
  • 对bounceRate列,支持两种处理方式:
    1. 选取同组内sessions数值最大的行对应的bounceRate值
    2. 按sessions为权重计算bounceRate的加权平均值

示例数据

data <- data.frame(
  yearMonth = c(202405, 202406, 202405),
  page = c("a.html", "b.html", "a.html"),
  users = c(20, 14, 2),
  sessions = c(22, 16, 3),
  bounceRate = c(0.48, 0.52, 0.90)
)

原代码问题分析

原aggregate函数的逻辑存在两处错误:

  1. 分组处理时,x是单列数据,不存在names(x),无法通过any(names(x) == "bounceRate")判断列名
  2. which.max(data$Sessions)是取整个数据集的最大会话数,而非当前分组内的最大值,导致结果错误

解决方案

方案1:取分组内会话数最多的bounceRate

使用dplyr包实现,逻辑清晰直观:

library(dplyr)

result_max_session <- data %>%
  group_by(yearMonth, page) %>%
  summarise(
    users = sum(users),
    sessions = sum(sessions),
    bounceRate = bounceRate[which.max(sessions)]
  ) %>%
  ungroup()

print(result_max_session)

输出结果:

# A tibble: 2 × 5
  yearMonth page    users sessions bounceRate
      <dbl> <chr>   <dbl>    <dbl>      <dbl>
1    202405 a.html     22       25       0.48
2    202406 b.html     14       16       0.52

方案2:计算bounceRate的加权平均值

按sessions作为权重,计算分组内的加权平均跳出率:

result_weighted <- data %>%
  group_by(yearMonth, page) %>%
  summarise(
    users = sum(users),
    sessions = sum(sessions),
    bounceRate = weighted.mean(bounceRate, sessions)
  ) %>%
  ungroup()

print(result_weighted)

输出结果:

# A tibble: 2 × 5
  yearMonth page    users sessions bounceRate
      <dbl> <chr>   <dbl>    <dbl>      <dbl>
1    202405 a.html     22       25       0.54
2    202406 b.html     14       16       0.52

Base R 实现(无需额外包)

如果不想使用dplyr,可以用by函数实现分组处理:

result_base_max <- do.call(rbind, by(data, list(data$yearMonth, data$page), function(g) {
  data.frame(
    yearMonth = unique(g$yearMonth),
    page = unique(g$page),
    users = sum(g$users),
    sessions = sum(g$sessions),
    bounceRate = g$bounceRate[which.max(g$sessions)]
  )
}))

rownames(result_base_max) <- NULL
print(result_base_max)

内容的提问来源于stack exchange,提问作者Nelie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:17:18