У меня есть текстовая переменная, и я хочу создать индикаторные переменные, идентифицирующие вектор шаблонов в текстовой переменной.Для каждого шаблона должна быть создана новая индикаторная переменная (предпочтительно с именем переменной, идентичным шаблону.
создать пример данных:
#rm(list = ls())
mydata <- read.table(
header = T, con <- textConnection
('
ID text
6 "aaa"
7 "bbb"
10 "ccc"
11 "a bbb"
29 "a bbb"
30 "bbb"
31 "ddd"
'), stringsAsFactors = FALSE, fill = TRUE, strip.white = TRUE)
close(con)
сопоставление одного шаблона
# a single pattern
mydata$a <- as.integer(grepl(pattern = "aaa", x = mydata$text))
mydata$a
Затем создайте вектор шаблонов:
# multiple patterns stored in a vector
vecpat <- c("aaa", "bbb", "ccc", "ddd", "eee")
И теперь мой вопрос заключается в том, как адаптировать приведенный выше код для сопоставления с шаблоном и создания переменных для нескольких шаблонов. Новые переменные показывают, что они добавляются в фрейм данных,с метками "aaa", "bbb", "ccc", "ddd", "eee" и значениями в диапазоне от 0 до 1.
Я попытался сделать это с помощью str_match_all из пакета stringr. Но яЯ не уверен, как обработать полученный объект. Следующая ссылка (https://rpubs.com/iPhuoc/stringr_manipulation) смотрит на это, но не предоставляет больше информации, чем цитата ниже: «Если вы хотите извлечь за пределы первого номера телефона, например,Второй номер телефона в последней строке, вы можете использовать str_match_all (). Но, как и str_split (), он будет возвращать список с одним компонентом для каждой входной строки, и вам нужно будет использовать lapply (), чтобы обработать результат. "