Найти документы, которые включают одно из списка слов в R - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть два кадра данных: msnbc содержит столбец стенограмм новостей с именем text, а dictionary содержит столбец слов с именем search.Я хочу вернуть новый фрейм данных, который включает все строки msnbc, где поле text содержит одно или несколько слов из столбца search.Данные игрушки:

msnbc <- data.frame(id=c(1,2,3), text=c("hello world", "goodbye world","hello friends"))
dictionary <- data.frame(search=c("hello","lorem","ipsum","dolor")

Новый набор данных должен включать первый и третий элемент msnbc, поскольку они включают одно из слов из dictionary$search

Моей первой мыслью было использование str_detect но нет опции для передачи вектора строк в качестве шаблона.Моя другая идея заключалась в том, чтобы каким-то образом использовать filter, но не уверен, как реализовать:

new_msnbc <- msnbc %>%
    filter(dictionary$search %in% text)

Но это не работает, как задумано.Каков наилучший способ сделать это?Бонусные баллы за решение tidyverse.

1 Ответ

1 голос
/ 26 сентября 2019

Похоже, вы можете сделать это с filter и grepl:

result <- msnbc %>%
filter(grepl(paste(dictionary$search, collapse="|"), text))
...