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

如何对以Q开头的列,用str_detect()统计"0"的出现数量?

实现方法

首先你的原始数据定义如下:

tibble(Q1 = c("0","A"),
       Q2 = c("A","A"),
       Q3 = c("0","A"),
       C1 = c("A","0")
) -> DB

可以用两种高效的方式实现需求:

方法一:用rowSums结合across(推荐,效率更高)

DB %>%
  mutate(S = rowSums(across(starts_with("Q"), ~ .x == "0")))
  • starts_with("Q")精准筛选所有以"Q"开头的列
  • ~ .x == "0"将列中每个元素转换为布尔值(匹配"0"则为TRUE,对应数值1;否则为FALSE,对应数值0)
  • rowSums对每行的布尔值求和,得到该行Q列中"0"的数量

方法二:用rowwise逐行计算

DB %>%
  rowwise() %>%
  mutate(S = sum(c_across(starts_with("Q")) == "0")) %>%
  ungroup()
  • rowwise()设置按行执行后续操作
  • c_across(starts_with("Q"))将每行的Q列元素合并为一个向量
  • 对向量中的元素判断是否等于"0",再用sum统计符合条件的数量
  • 最后用ungroup()取消按行分组状态

两种方法运行后都会得到你需要的结果:新增列S的值为c(2, 0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:45:36