【问题标题】:How can I extract string's parts in R?如何在 R 中提取字符串的部分?
【发布时间】:2020-07-10 18:54:01
【问题描述】:

我的 df$just 中有以下短语,如果单词“PELAMOR”至少匹配一次,我想返回 1,否则返回 0:

“Contabilização conforme IN ccc . IMPORTE PARA FECHAMENTO DE BALANCETE. Objeto........:PELAMOR Subobjeto.....:PELAMOR DEUS E DEMAIS cfe IN 365/4.2.2.3.2.”

What I have tried so far, but all I got is 0 instead of 1:
binario <- data.frame(just = df$just, 
                      PELAMOR = grepl("PELAMOR",tolower(df$just))*1)

【问题讨论】:

  • 奇怪的是您使用的是tolower,但您的模式PELAMOR 大写。考虑这个grepl("PELAMOR",tolower(just),ignore.case=TRUE)*1,和just &lt;-"Contabilização conforme IN ccc . IMPORTE PARA FECHAMENTO DE BALANCETE. Objeto........:PELAMOR Subobjeto.....:PELAMOR DEUS E DEMAIS cfe IN 365/4.2.2.3.2."

标签: r string extract


【解决方案1】:

如果我们需要二进制向量,请使用 as.integer 或 (+) 将 grepl 的逻辑强制转换为二进制。在 OP 的代码中,列转换为小写,而 pattern 为大写,导致不匹配并全为零。取而代之的是ignore.case 参数,默认为FALSE

as.integer(grepl("PELAMOR", df$just, ignore.case = TRUE))

使用stringr,我们可以使用str_detect

library(stringr)
+(str_detect(df$just, fixed("PELAMOR", ignore_case = TRUE)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2012-04-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多