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

如何按数据框列位置而非列名执行group_by分组?(附R代码场景)

按数据集第一列执行group_by()的R代码修改方案

原代码通过指定列名Pop进行分组,要改成按数据集第一列分组且不写具体列名,有以下几种简洁可行的方法:

  • 方法1:使用across(1)(dplyr 1.0.0及以上版本支持)
    这是最直接的写法,across(1)代表选取数据框的第一列作为分组依据:
tor <- df %>% 
  group_by(across(1)) %>% 
  group_modify(~ .x %>% adorn_totals()) %>% 
  ungroup
  • 方法2:通过列名索引结合all_of()
    先获取第一列的列名,再用all_of()传入group_by,这种方式会保留原列名,避免分组后列名异常:
tor <- df %>% 
  group_by(all_of(names(df)[1])) %>% 
  group_modify(~ .x %>% adorn_totals()) %>% 
  ungroup
  • 方法3:tidyeval求值写法
    利用符号求值的方式,动态获取第一列列名并传入group_by:
tor <- df %>% 
  group_by(!!sym(names(df)[1])) %>% 
  group_modify(~ .x %>% adorn_totals()) %>% 
  ungroup

注意:你原来尝试的group_by(df[,1])不推荐使用,因为这种写法会将第一列以数据框形式传入分组,最终分组后的列名会变成df[,1],而非原数据框的列名,容易导致后续数据处理出现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:54:23