R语言dplyr使用列范围或匹配规则创建行计算列的方法
解决方案
你可以使用dplyr的rowSums()搭配across()函数实现批量选列按行求和,两种常用写法如下:
写法1:按列范围选择
library(dplyr) result <- gl %>% mutate( C1 = rowSums(across(X4010:X4030)), C2 = rowSums(across(X5010:X5040)) )
写法2:按列名前缀匹配(更适合列数多的场景)
library(dplyr) result <- gl %>% mutate( # 选中所有列名以X40开头的列求和 C1 = rowSums(across(starts_with("X40"))), # 选中所有列名以X50开头的列求和 C2 = rowSums(across(starts_with("X50"))) )
如果你的数据中存在缺失值,可在rowSums()中添加na.rm = TRUE参数,避免求和结果返回NA:
C1 = rowSums(across(starts_with("X40")), na.rm = TRUE)
以上两种写法输出的结果和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Ajit Singh
相关产品推荐
相关产品推荐

