【问题标题】:How to create a new column based on a regex match across all columns?如何基于所有列的正则表达式匹配创建新列?
【发布时间】:2021-11-10 02:03:15
【问题描述】:

我想在我的所有列中搜索正则表达式模式,如果有匹配项,则使用“匹配”创建一个新列,否则创建一个“不匹配”。

过滤时,我能够做到这一点

filter_all(any_vars(str_detect(., '(?i)string.*c5')))

但是当我尝试时

mutate(match = if_else(any_vars(str_detect(., '(?i)string.*c5')), "Match", "No Match"))

我得到一个

“条件必须是逻辑向量,而不是any_vars对象”错误。

这是有道理的,但我还没有弄清楚如何调整函数来完成它。请注意,并非我的所有列都是字符串,但希望这不是问题。

我阅读了一些答案,但没有一个有效--c_acrossrowsum 也无效(用于网站上的其他答案)。

【问题讨论】:

    标签: r regex tidyverse stringr dplyr


    【解决方案1】:

    你可以使用if_any -

    library(dplyr)
    library(stringr)
    
    data %>%
      mutate(match = if_else(if_any(.fns = ~str_detect(., '(?i)string.*c5')), "Match", "No Match"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2020-11-25
      • 2010-11-16
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多