在R中对名称为SECOND加数字的列按行求和的方法
解决R中指定列名前缀+数字的行求和问题
方法1:Base R 原生实现
直接用正则匹配列名,再做行求和,无需额外安装工具包:
# 假设你的数据框名为df df$second_total <- rowSums(df[, grepl("^SECOND\\d+$", names(df))], na.rm = TRUE)
grepl("^SECOND\\d+$", names(df)):用正则筛选列名,只保留以SECOND开头、后面跟纯数字的列(精准匹配SECOND1到SECOND54,自动排除SECONDother)na.rm = TRUE:可选参数,用来忽略列中的NA值,避免求和结果变成NA;如果你的数据没有NA,可以去掉这个参数
方法2:tidyverse 工具包实现
如果你习惯用dplyr的管道语法,可以这么写:
library(dplyr) # 方式一:select + rowSums(简洁高效) df <- df %>% mutate(second_total = rowSums(select(., matches("^SECOND\\d+$")), na.rm = TRUE)) # 方式二:rowwise + c_across(适合更复杂的逐行运算场景) df <- df %>% rowwise() %>% mutate(second_total = sum(c_across(matches("^SECOND\\d+$")), na.rm = TRUE)) %>% ungroup()
matches("^SECOND\\d+$"):dplyr中用于正则匹配列名的函数,作用和base R里的grepl一致rowwise():将数据框按行分组,配合c_across()可以灵活指定需要计算的列
内容的提问来源于stack exchange,提问作者NoobR
相关产品推荐
相关产品推荐

