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

R使用dplyr统计dataframe每行指定列中特定字符串的出现次数

你可以用rowSums配合across实现按行计数需求,修改后的代码如下:

df <- df %>% 
  mutate(
    d9 = rowSums(across(all_of(cols), ~ . %in% bcde))
  )

代码说明

  • across(all_of(cols), ~ . %in% bcde) 会遍历你指定的所有目标列,对每个元素判断是否属于bcde集合,返回和指定列维度一致的逻辑值矩阵(符合条件为TRUE,不符合为FALSE)
  • R中逻辑值参与数值运算时TRUE等价于1、FALSE等价于0,用rowSums对矩阵每行求和,得到的就是每行符合条件的元素总个数,和你期望的输出完全匹配。

如果你的数据中存在空值(NA),可以在rowSums中添加na.rm = TRUE参数过滤空值,避免计数结果返回NA:

df <- df %>% 
  mutate(
    d9 = rowSums(across(all_of(cols), ~ . %in% bcde), na.rm = TRUE)
  )

如果你偏好纯dplyr语法实现,也可以用rowwise + c_across的写法:

df <- df %>%
  rowwise() %>%
  mutate(d9 = sum(c_across(all_of(cols)) %in% bcde)) %>%
  ungroup()

内容的提问来源于stack exchange,提问作者sdg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:54:03