R语言按指定列值合并多行并对其余对应列求和的实现咨询
R语言分组聚合求和实现方案
首先构造和你示例一致的测试数据集,可直接运行验证:
df <- data.frame( Country = c(rep("Austria", 3), rep("Belgium", 2)), A = c(1,5,2,6,8), B = c(1,2,8,9,1), C = c(4,6,1,9,9), D = c(1,1,2,3,2) )
方法1:基础R实现(无需安装第三方包)
用内置aggregate函数即可快速实现,代码最简洁:
result <- aggregate(. ~ Country, data = df, FUN = sum)
方法2:dplyr包实现(tidyverse生态常用方案,可读性高)
适合习惯tidyverse语法的用户:
# 未安装包可先运行 install.packages("dplyr") library(dplyr) result <- df %>% group_by(Country) %>% summarise(across(everything(), sum))
如果只需要对指定列求和,将everything()替换为c(A,B,C,D)即可。
方法3:data.table实现(适合超大数据集,运算效率更高)
处理数十万行以上的数据集时优先选择:
# 未安装包可先运行 install.packages("data.table") library(data.table) setDT(df) result <- df[, lapply(.SD, sum), by = Country]
- 注意:如果数据集存在缺失值
NA,求和会返回NA,可在sum参数中添加na.rm = TRUE忽略缺失值计算,例如sum(na.rm = TRUE)。
所有方法运行后得到的result即为你需要的目标数据集:
| Country | A | B | C | D |
|---|---|---|---|---|
| Austria | 8 | 11 | 11 | 4 |
| Belgium | 14 | 10 | 18 | 5 |
内容的提问来源于stack exchange,提问作者Thomas Walsh
相关产品推荐
相关产品推荐

