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

如何简化2015-2022年度求和代码,快速生成汇总DataFrame?

批量计算年度总值并生成DataFrame

想要创建一个展示2015-2022各年度总值的新DataFrame,请问是否无需为每个年份创建Sum变量再组合向量,就能实现该需求?

当前实现代码:

Sum15 = mydata %>%
filter(Date==2015) %>%
summarise(Value = sum(Value))

Sum16 = mydata %>%
filter(Date==2016) %>%
summarise(Value = sum(Value))

Sum17 = mydata %>%
filter(Date==2017) %>%
summarise(Value = sum(Value))
# ……(剩余年份的重复代码)
Year = c("2015","2016","2017","2018","2019","2020","2021","2022")

Value = c(Sum15$Value, Sum16$Value, Sum17$Value, Sum18$Value, Sum19$Value,
          Sum20$Value, Sum21$Value, Sum22$Value)

YearSum = data.frame(Year,Value)

简化实现方法:

完全可以不用逐个创建Sum变量,用dplyr的分组聚合功能就能一步完成,代码简洁且易维护:

YearSum = mydata %>%
  # 按年份分组
  group_by(Date) %>%
  # 计算每组的总值,na.rm=TRUE用于忽略缺失值(可选)
  summarise(Value = sum(Value, na.rm = TRUE)) %>%
  # 取消分组(可选,避免后续操作受分组影响)
  ungroup() %>%
  # 筛选2015-2022的年份
  filter(Date %in% 2015:2022) %>%
  # 把列名Date改为Year(如果需要和原代码输出列名一致的话)
  rename(Year = Date)

如果你的Date列是字符类型,只需把筛选条件改成Date %in% as.character(2015:2022)即可。

这种方式不需要手动创建每个年份的Sum变量,也不用手动拼接向量,直接通过分组求和+筛选就能得到目标DataFrame,后续年份变动时只需要调整筛选范围即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:07