Я ищу, чтобы найти ключевые слова, которые появляются в строке поиска (в данном случае, вопрос исследования).Я думаю, что я близко, но я не совсем уверен, в чем проблема, с которой я сталкиваюсь.Мой фрейм данных выглядит примерно так:
Q1 keywords
How do you assess strategic deterrence messaging? Deterrence messaging effects perception assessment
An energy transition for green growth Energy transition sustainable
Some other research question here research keywords topics etc
, где Q1
относится к вопросу, а keywords
- это список слов (в данном случае очищенный логический поиск с AND, NOT,и ИЛИ удалены).Я пытаюсь определить, появляется ли какой-либо из keywords
в строке Q1
, находит совпадения и подсчитывает, как часто это происходит (поэтому я могу сказать, что keywords
появилось в column1
n % времени, в column2
n % времени ...).
Вот с чего я начал, используя tidyverse
:
df_final <- df %>%
mutate(matches = str_extract_all(
Q1,
str_c(df$keywords, collapse = "|") %>% regex(ignore_case = T)),
match = map_chr(matches, str_c, collapse = ", "),
count = map_int(matches, length)
)
Но я не получаю никаких совпадений.Я предполагаю, что это может иметь какое-то отношение к моей колонке keyword
?Нужно ли преобразовывать это, скажем, в вектор или список через запятую, чтобы это работало правильно?Заранее спасибо за предложения!
РЕДАКТИРОВАТЬ: Пример вывода из dput()
:
structure(list(Q1 = c("Assessing the effects of strategic deterrence messaging in the cognitive dimension",
"How do you assess effects of strategic deterrence messaging?",
"Determine Strategic Implications of Climate Change to USG/DoD"
), keywords = c("Deterrence messaging effects perception assessment",
"political philosophy sociology social sciences history marketing power structure government governing class bourgeoisie social class military class ruling class governing class",
"Climate Change Strategic Global Warming Strategic Climate Change Policy Global Warming Policy"
)), .Names = c("Q1", "keywords"), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"))