如何在R中将重复行的数值合并求和为单行
高效实现按Genus分组求和的R方法
当处理大数据量时,base R的aggregate函数效率不足,以下两种方法能显著提升分组求和的速度:
方法一:使用dplyr(tidyverse生态)
借助dplyr的分组聚合语法,代码简洁且性能优化:
library(dplyr) # 读取数据 count <- read.csv("count_data.csv", header = TRUE) # 按Genus分组,对所有数值列求和 shl <- count %>% group_by(Genus) %>% summarise(across(where(is.numeric), sum)) %>% ungroup() # 可选,取消数据的分组状态
across(where(is.numeric))会自动识别所有数值型列并应用求和操作,无需手动指定列名- 若需指定特定列,可替换为
across(c(A, B, C, D), sum),进一步提升效率
方法二:使用data.table(大数据场景首选)
data.table专为大数据处理设计,读取和聚合速度均优于base R和dplyr:
library(data.table) # 用fread快速读取大文件(比read.csv高效) count <- fread("count_data.csv") # 按Genus分组,对其余列求和 shl <- count[, lapply(.SD, sum), by = Genus]
.SD指代除分组列(Genus)外的所有列,lapply(.SD, sum)对这些列逐一求和- 若需指定列,可添加
.SDcols = c("A", "B", "C", "D")参数,仅对目标列计算
内容的提问来源于stack exchange,提问作者Rishav Sahil
相关产品推荐
相关产品推荐

