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

如何在R语言中从年度数据创建汇总各列年度总值的新DataFrame?

按年份分组计算DataFrame多列年度总值

问题描述

现有如下DataFrame:

yearv1v2v3
2021546
20211053
2020785
2020334
2019318

需要生成一个新的DataFrame,按year分组计算每列的年度总和,每行对应一个年份,期望结果如下:

yearv1v2v3
20211599
202010119
2019318

尝试了以下代码但只得到了v1列的汇总结果:

newdf <- df %>% 
  group_by(year) %>% 
  summarise(v1 = sum(v1))

解决方案

你的代码仅针对v1列做了求和,要批量处理多列,可使用dplyr的across()函数对指定列应用相同操作:

方法1:指定具体列范围

若明确要汇总的列是v1到v3,直接指定列范围即可:

library(dplyr)

newdf <- df %>% 
  group_by(year) %>% 
  summarise(across(v1:v3, sum))

方法2:自动匹配数值列

若DataFrame中有多个数值列且都需要汇总,无需逐个列名指定,用where(is.numeric)筛选所有数值列(自动排除非数值的year列):

newdf <- df %>% 
  group_by(year) %>% 
  summarise(across(where(is.numeric), sum))

旧版dplyr兼容写法(可选)

如果使用的是dplyr 1.0.0之前的版本,可替换为summarise_all():

newdf <- df %>% 
  group_by(year) %>% 
  summarise_all(sum)

执行上述代码后,即可得到包含所有列年度总和的目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:35:23