You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr计算包含指定字符串的列的行求和

解决方法:计算DataFrame中含指定字符串列的行求和

你遇到的问题主要有两点:一是contains()的使用方式错误,二是直接用sum()会计算所有选中列的整体总和,而非每行的和。下面提供两种简洁的解决方案:

方法1:使用rowwise() + c_across()

先按行分组,再对每行中符合条件的列求和:

library(dplyr)

df <- data.frame("aaa" = 2:5, "bbb" = 1:4, "ABC_DEF" = 1:4, "DEF" = 2:5, "ABC_DEF_GHI" = 3:6, "aaa_ABC_DEF" = 2:5)

df %>%
  rowwise() %>%
  mutate(ABC_DEF_sum = sum(c_across(contains("ABC_DEF")), na.rm = TRUE)) %>%
  ungroup()
  • rowwise():让后续操作按行执行
  • c_across(contains("ABC_DEF")):选中所有列名包含"ABC_DEF"的列
  • na.rm = TRUE:可选参数,用于忽略数据中的缺失值

方法2:使用across() + rowSums()

这是更高效的写法,无需按行分组,直接对选中列按行求和:

df %>%
  mutate(ABC_DEF_sum = rowSums(across(contains("ABC_DEF")), na.rm = TRUE))

该方法性能更优,适合处理大型数据集。

注意事项

原数据中已存在名为ABC_DEF的列,建议新列用不同名称(如示例中的ABC_DEF_sum)避免覆盖原数据。如果一定要用ABC_DEF作为新列名,直接替换即可,但会丢失原列数据。

运行上述代码后,会得到你期望的结果:

aaa bbb ABC_DEF DEF ABC_DEF_GHI aaa_ABC_DEF ABC_DEF_sum
1   2   1       1   2           3           2           6
2   3   2       2   3           4           3           9
3   4   3       3   4           5           4          12
4   5   4       4   5           6           5          15

内容的提问来源于stack exchange,提问作者Céline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:40:23