Как я могу извлечь части строки в R? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть следующая фраза, расположенная в моем df $ just, и я хотел бы вернуть 1, если слово «PELAMOR» соответствует хотя бы один раз, и 0 в противном случае:

«Contabilização conforme IN ccc. ИМПОРТ PARA FECHAMENTO DE BALANCETE. Цель ........: 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)

1 Ответ

1 голос
/ 10 июля 2020

Если нам нужен двоичный вектор, приведите логическое значение из grepl в двоичное с помощью as.integer или (+). В коде 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)))
...