如何在R语言data.frame表格的最后一列新增按行求和的SUM列
实现方法
你可以通过以下两种常用方案实现按行求和并新增SUM列,两种方案都会自动忽略NA值,符合你需要的计算逻辑:
方案1:基础R写法
直接使用rowSums()函数指定要计算的数值列即可,这里排除第一列的日期列:
# 先把示例数据赋值给output output <- structure(list(date = structure(c(18808, 18810), class = "Date"), ABC = c(4, 1), CDE = c(1, NA), FGH = c(6, NA)), row.names = c(NA, -2L), class = "data.frame") # 新增求和列 output$SUM <- rowSums(output[, -1], na.rm = TRUE)
如果你的日期列不在第一列,也可以通过列名指定计算范围,适配性更强:
output$SUM <- rowSums(output[, c("ABC","CDE","FGH")], na.rm = TRUE)
方案2:dplyr(tidyverse生态)写法
如果日常使用tidyverse体系,可以用mutate结合rowSums实现,自动识别所有数值列计算,不用手动列全字段名:
library(dplyr) output <- output %>% mutate(SUM = rowSums(across(where(is.numeric)), na.rm = TRUE))
如果你需要明确指定求和的列范围,也可以写为:
output <- output %>% rowwise() %>% mutate(SUM = sum(c_across(ABC:FGH), na.rm = TRUE)) %>% ungroup()
两种方法运行后得到的结果都和你要求的输出完全一致。
内容的提问来源于stack exchange,提问作者user17163779
相关产品推荐
相关产品推荐

