如何使用dplyr按年份分组汇总值并保留index列?
解决方法
你的问题核心是分组时未包含index列,导致汇总后无法保留该字段。观察数据可知,每个year对应唯一的index值,只需在group_by中同时指定year和index即可解决。
修正后的代码如下:
sum1 <- df1 %>% group_by(year, index) %>% summarise(value = sum(value, na.rm = TRUE), .groups = "drop")
代码说明
group_by(year, index):同时按年份和索引分组,确保每个分组对应的index值被保留summarise(...):计算每组的value总和,na.rm = TRUE用于忽略缺失值.groups = "drop":汇总后取消分组状态,得到普通数据框(可根据需求选择保留分组)
运行代码后得到的结果与你期望的df2结构完全一致:
| year | index | value |
|---|---|---|
| 2015 | 1 | 15 |
| 2016 | 1 | 9 |
| 2017 | 1 | 29 |
| 2018 | 2 | 27 |
| 2019 | 2 | 10 |
内容的提问来源于stack exchange,提问作者sebmw
相关产品推荐
相关产品推荐

