Как найти слово в столбце - PullRequest
0 голосов
/ 29 июня 2018

У меня есть код для получения Y или N в новом столбце, если «Ключевые слова» содержат «Завершено» (если возможно, также вариант слова, например «завершить», «Complet»), тогда Y, иначе N. Моя проблема заключается в том, что, когда слово в верхнем регистре или разделены "," "/" или "-" код не работают. Вы можете помочь?

id_base_full$Completion.Flag <- 0

x <- nrow(id_base_full)

for(i in 1:x){

  if (grepl("Complete",id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else if (grepl("complete",id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else if (grepl("Complet" ,id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else{ 
    id_base_full$Completion.Flag[i] <- "N" 
  }
  next [i]
} 

1 Ответ

0 голосов
/ 29 июня 2018

Примерно так должно получиться то, что вы хотите:

id_base_full$Completion.Flag <- "N"
id_base_full$Completion.Flag[grepl("complete?", ignore.case=TRUE, id_base_full$HI.Keywords)] <- "Y"

Идея состоит в том, чтобы создать столбец с «N» везде, а затем для строк, в которых найдено слово «завершить» (с необязательным окончанием «e»), установить значение «Y».

В регулярном выражении ? означает 0 или 1 вхождение предыдущего символа (e здесь), grepl возвратит логический вектор TRUE / FALSE, позволяющий выбрать правильные строки.

Чтобы быть более простым, чем Y / N, я бы сохранил логические значения в результирующем наборе данных с:

id_base_full$Completion.Flag <- grepl("complete?", ignore.case=TRUE, id_base_full$HI.Keywords)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...