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

如何按ID分组对tibble不同列应用不同聚合函数?

按ID分组并对不同列应用不同聚合函数的实现

这个需求完全可以实现,以下是基于dplyr包(适配tibble数据结构的tidyverse工具)的两种实用实现方式:

方法1:逐列指定聚合函数

library(dplyr)

# 生成原始数据
ID<-c('A','A','A','B','C','D','D','E','E','E')
branch<-c('a','b','c','a','a','a','b','a','b','c')
w <-sample (1:100, 10)
x <-sample (1:100, 10)
y <-sample (1:100, 10)
z <-sample (1:100, 10)
  
tib<-tibble(ID,branch,w,x,y,z)

# 执行分组聚合
aggregated_result <- tib %>%
  group_by(ID) %>%
  summarize(
    w_sum = sum(w),
    x_mean = mean(x),
    y_mean = mean(y),
    z_sum = sum(z),
    .groups = "drop"  # 聚合后取消分组状态,返回普通tibble
  )

# 查看最终结果
aggregated_result

方法2:用across()批量处理同规则列

针对x、y这类需要应用相同聚合函数的列,可通过across()简化代码:

aggregated_result <- tib %>%
  group_by(ID) %>%
  summarize(
    w = sum(w),
    across(c(x, y), mean),  # 对x、y列统一应用均值计算
    z = sum(z),
    .groups = "drop"
  )

两种方法最终都会输出每个ID对应一行的聚合结果,完全匹配你要求的规则:w列分组求和、x和y列分组求均值、z列分组求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:11:57