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

如何用dplyr原生管道对非分组变量批量计算累加和?

自动处理非分组变量的累加和实现方案

直接给你可用的两种实现代码:

写法一:固定排除指定列

df |> 
  group_by(id) |> 
  arrange(x, .by_group = TRUE) |> 
  mutate(across(-c(id, x), cumsum))

写法二:适配动态分组的通用写法

如果后续分组变量有调整,不用手动修改排除列,用group_cols()自动识别分组变量:

df |> 
  group_by(id) |> 
  arrange(x, .by_group = TRUE) |> 
  mutate(across(-c(group_cols(), x), cumsum))

关键细节说明:

  1. arrange的.by_group参数:分组后排序时加上这个参数,能确保是在每个分组内部按x排序,避免全局排序打乱分组结构。
  2. across的列选择逻辑:
    • -c(id, x)表示排除分组变量id和不需要累加的排序变量x,剩下的y、z会被自动选中计算累加和;
    • group_cols()是dplyr内置函数,能自动识别当前所有分组变量,适合分组列可能变动的场景,更灵活。

你之前尝试代码的问题:

  • mutate(across(everything()), cumsum)会把id、x都纳入计算,不符合需求;
  • all_vars()和any_vars()是dplyr旧版语法,现在已经被across替代,所以无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:44:58