如何在R中按年份分组对多个列同时进行求和汇总
按年份分组同时对多列求和的解决方法
方法1:dplyr包实现(推荐)
dplyr 1.0.0及以上版本可以用across()函数批量指定要聚合的列,无需逐列操作,代码如下:
library(dplyr) # 写法1:手动指定要聚合的列 aggr_data <- data %>% group_by(Year) %>% summarise(across(c(X1, X2, X3), sum, na.rm = TRUE)) # 写法2:匹配列名规则批量选择,适合列数多的场景 # 下面的代码会自动选择所有以X开头的列进行求和 aggr_data <- data %>% group_by(Year) %>% summarise(across(starts_with("X"), sum, na.rm = TRUE))
注意:分组字段Year的大小写要和原始数据集保持一致,不要写成小写year,否则会报错。
方法2:基础R实现(无需安装第三方包)
如果不想加载dplyr,可以用基础R自带的aggregate()函数实现同样效果:
# . ~ Year 表示对除了Year之外的所有列进行聚合 aggr_data <- aggregate(. ~ Year, data = data, FUN = sum, na.rm = TRUE)
两种方法输出的都是符合要求的完整dataframe格式,无需后续拼接操作。
内容的提问来源于stack exchange,提问作者taylor
相关产品推荐
相关产品推荐

