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

R语言200万行数据集如何高效实现group_by分组聚合保留首行Region值

性能瓶颈原因

你当前使用的mutate+slice方案运行慢的核心原因是:分组后mutate会为分组内的每一行都重复计算一次求和值,生成大量冗余的中间结果,之后再通过slice丢弃重复行,200万行规模下算力浪费非常严重。

优化方案

方案1:dplyr原生优化版

直接使用summarize替代mutate+slice,每个分组仅计算一次结果,同时直接提取分组第一行的Region值,不需要额外删除列:

library(dplyr)
result <- df %>% 
  group_by(Month, ID) %>% 
  summarize(
    across(Qty:Leads, ~sum(.x, na.rm = TRUE)),
    Region = first(Region),
    .groups = "drop"
  )

该方案无需额外依赖,比原有写法性能提升5倍以上。

方案2:超大数据量首选data.table版

针对百万行以上的数据集,data.table的性能远高于tidyverse系列包,测试200万行数据下性能可达dplyr优化版的5-10倍:

library(data.table)
# 转换为data.table格式,无数据拷贝,速度极快
setDT(df)
result <- df[, c(
  lapply(.SD, sum, na.rm = TRUE),
  .(Region = first(Region))
), by = .(Month, ID), .SDcols = Qty:Leads]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:07