Я новичок в R и боролся с этим. Я хочу создать новый столбец, который проверяет наличие в столбце «текст» набора любых слов («foo», «x», «y»), а затем записывает это значение в новый столбец.R: вырезать и вставлять совпадения ключевых слов
У меня есть кадр данных, который выглядит следующим образом: a->
id text time username
1 "hello x" 10 "me"
2 "foo and y" 5 "you"
3 "nothing" 15 "everyone"
4 "x,y,foo" 0 "know"
Правильный вывод должен быть:
a2 ->
id text time username keywordtag
1 "hello x" 10 "me" x
2 "foo and y" 5 "you" foo,y
3 "nothing" 15 "everyone" 0
4 "x,y,foo" 0 "know" x,y,foo
У меня есть это:
df1 <- data.frame(text = c("hello x", "foo and y", "nothing", "x,y,foo"))
terms <- c('foo', 'x', 'y')
df1$keywordtag <- apply(sapply(terms, grepl, df1$text), 1, function(x) paste(terms[x], collapse=','))
Какая работа, но сбой R, когда мой список игл содержит 12k слов, а мой текст имеет 155k строк. Есть ли способ сделать это, чтобы не рухнуть R?
Кажется очень неэффективным. Почему бы вам не исследовать пакеты, которые уже рассматривали эту проблему. –
Возможно, попробуйте что-то подобное в библиотеке stringr: sapply (df1, function (x) str_extract_all (x, paste (terms, collapse = "|"))) – Wyldsoul
Что такое 'needleList'? – steveb