【发布时间】:2019-11-15 19:35:50
【问题描述】:
我正在尝试找到一种从数据集中的文本列中提取单词的有效方法。我使用的方法是
library(dplyr)
library(stringr)
Text = c("A little bird told me about the dog", "A pig in a poke", "As busy as a bee")
data = as.data.frame(Text)
keywords <- paste0(c("bird", "dog", "pig","wolf","cat", "bee", "turtle"), collapse = "|")
data %>% mutate(Word = str_extract(Text, keywords))
这只是一个示例,但我有超过 2000 个可能的单词要从每一行中提取。我不知道另一种使用方法,但是我将拥有一个大的正则表达式这一事实会使事情变慢或正则表达式的大小无关紧要?我认为它不会在每一行中出现多个这些单词,但是如果每行中出现多个单词,有一种方法可以自动制作多列?
【问题讨论】:
-
你需要
v1 <- c("bird", "dog", "pig","wolf","cat", "bee", "turtle") ;map(v1, ~ str_detect(data$Text, .x)) %>% set_names(v1) %>% as_tibble %>% bind_cols(data, .) -
很大程度上取决于您是要匹配整个单词还是只匹配字符序列。