Шаблон соответствия в столбце - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу сопоставить определенные слова и числа и подмножество этих строк из фрейма данных.

match_words<-data.frame("words"=c("ING","HDFC","HSBC","ROYAL"))

df <- data.frame(bank_issue = c("ING,HDFC", "ROYAL,SINGB","GR01565B,HSBC","01565,BOC","BOA,JPG001","G001"))

Когда я пытаюсь сопоставить 1-е слово, используя grep, я получаю 2 строки, которые соответствуют & содержат слово , но мне нужны только те строки, которые соответствуют целому слову. Мне нужно поднастроить эту строку из df.

Я использую функцию grep. Вот что я получаю сейчас:

grep("ING",df$bank_issue)
# [1] 1 2

А также мне нужно сделать для каждой строки.

Желаемый результат:

1 ING    ING,HDFC
2 01565  01565,BOC
3 G001   G001

Есть предложения?

1 Ответ

1 голос
/ 07 апреля 2020

Один из вариантов - использовать метасимвол границы слова.

grep("\\bING\\b",df$bank_issue)
#[1] 1

Если вам нужно создать эти шаблоны поиска программно, вы можете использовать paste0.

terms <- paste0("\\b",unlist(match_words),"\\b")
sapply(terms,function(x){grep(x,df$bank_issue)})
#  \\bING\\b  \\bHDFC\\b  \\bHSBC\\b \\bROYAL\\b 
#          1           1           3           2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...