【问题标题】:Search if a string has two specific words搜索一个字符串是否有两个特定的词
【发布时间】:2022-11-25 16:49:12
【问题描述】:

如果一列字符串在句子中的任何位置都包含“药物”和“婴儿”这两个词,我该如何搜索?

例如,如果该列包含诸如以下的字符串

  ID       Col1
  1        Quick Brown fox medication
  2        Brown fox infant
  3        Quick medication fox infant

预期结果应该只是 ID 为 3 的行

 ID       Col1
  3        Quick medication fox infant

我试过 str_detect 但没有用,所以非常感谢任何建议。

【问题讨论】:

  • 顺序重要吗?

标签: r regex string nlp


【解决方案1】:

您可以将 grepl 与两个正面前瞻结合使用:

regex <- "(?=.*\bmedication\b)(?=.*\binfant\b).*"
df[grepl(regex, df$Col1, perl=TRUE), ]

  ID                        Col1
3  3 Quick medication fox infant

数据:

df <- data.frame(
    ID=c(1,2,3),
    Col1=c("Quick Brown fox medication", "Brown fox infant",
           "Quick medication fox infant")
)

【讨论】:

    【解决方案2】:

    greplfilter 可以提供帮助:

    df <-  data.frame(id=c(1,2,3), Col1=c('Quick Brown fox medication',
                                          'Brown fox infant',
                                          'Quick medication fox infant'))
    
    dplyr::filter(df,grepl("medication",Col1) &
                     grepl("infant",Col1))
    

    输出

      id                        Col1
    1  3 Quick medication fox infant
    

    【讨论】:

      【解决方案3】:

      基础 R 方法


      df[with(df, grepl("infant", Col1) & grepl("medication", Col1)),]
      

      它简单易行。

      df <-  data.frame(id=c(1,2,3), Col1=c('Quick Brown fox medication',
                                            'Brown fox infant',
                                            'Quick medication fox infant'))
      

      【讨论】:

        猜你喜欢
        • 2014-12-15
        • 1970-01-01
        • 2019-02-12
        • 2015-07-10
        • 2014-11-24
        • 1970-01-01
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多