在R中为tibble新增行求和列并替换原列:报错排查
问题解决方法
错误原因
你写的rowSums(across(...))语法搭配错误:across()用于列级批量运算,返回的是数据框结构,而rowSums()虽能处理数据框,但这种组合会触发下标类型错误,尤其在分组数据中更明显(错误提示里的group 1说明你的数据处于分组状态)。
正确解决方案
针对你的需求(行级求和指定列、处理NA值、移除原列),推荐两种实用写法:
写法1:用c_across()适配行级运算
c_across()是dplyr专为行级运算设计的函数,能提取每行指定列的向量,完美匹配rowSums的需求:
Table2 <- Table1 %>% mutate(Col_E = rowSums(c_across(c(Col_B, Col_D)), na.rm = TRUE)) %>% select(-Col_B, -Col_D)
写法2:用select()直接指定列
这种写法更直观,直接用select()筛选需要求和的列,再传给rowSums:
Table2 <- Table1 %>% mutate(Col_E = rowSums(select(., Col_B, Col_D), na.rm = TRUE)) %>% select(-Col_B, -Col_D)
关键说明
na.rm = TRUE:处理你真实数据中的NA值,避免求和结果直接变为NAselect(-Col_B, -Col_D):移除被求和的原列,得到目标结构的Table2
内容的提问来源于stack exchange,提问作者dq.canario
相关产品推荐
相关产品推荐

