R语言按两个条件分组对数据框行求和并保留分组字段的问题
问题原因
你之前的代码仅对cyear单字段执行分组,因此同一cyear下所有relativeyear对应的数值都会被合并求和,无法得到双维度分组的统计结果。
解决方案
dplyr 方案
直接将cyear和relativeyear同时放入group_by()参数中即可实现双字段分组聚合,你用到的transmute步骤没有实际数据处理作用可以省略:
library(dplyr) work.total <- diva2 %>% group_by(cyear, relativeyear) %>% # 若数据存在NA值可添加na.rm = TRUE参数:sum(dollarandiv, na.rm = TRUE) summarise(dollarandiv = sum(dollarandiv), .groups = "drop")
.groups = "drop"参数用于聚合完成后自动解除分组,避免后续操作出现非预期的分组逻辑。
基础R方案
如果不想依赖dplyr包,也可以用基础R的aggregate函数实现同样效果:
work.total <- aggregate(dollarandiv ~ cyear + relativeyear, data = diva2, FUN = sum)
以上两种方案运行后得到的结果和你给出的理想输出完全匹配。
内容的提问来源于stack exchange,提问作者vinbaronen
相关产品推荐
相关产品推荐

