我有一个包含文本字符串列的R数据框。我想添加一个新列,其中一个单词与一个字符串匹配,然后将该字符串放入其中。我了解如何针对一个特定的文本目标执行此操作,如下面的可重现示例所示:
#make a data frame
library(tidyverse)
d=c("Buy apples here","Pears are cheap","Oranges for sale", "Potatoes are not fruit")
df<-as.data.frame(d)
#extract 'Orange' into a new column called 'fruit'
df<-df%>%mutate(fruit = str_extract(d, "Orange"))
但是,如何通过使用单词列表作为目标来对此向量化?
#target words
f=c("orange", "apple","pear")
dfa<-as.data.frame(f)
以及如何忽略这种情况,以便得到结果集,因此“ apple”和“ Orange”都产生匹配项,并在新列中放置了正确的水果描述:
#desired output
f1=c("apple","pear","orange","<NA>")
dfb<-as.data.frame(cbind(d,f1))
dfb
非常感谢。
您可以从要匹配的字符串向量中构建一个正则表达式,将它们粘贴在一起并由管道运算符将它们分开|
。您可以通过在匹配过程中将d
和都转换f
为大写(或小写)来消除大小写问题:
df %>%
mutate(fruit = str_extract(toupper(d),
toupper(paste(unique(dfa$f), collapse = "|"))))
#> d fruit
#> 1 Buy apples here APPLE
#> 2 Pears are cheap PEAR
#> 3 Oranges for sale ORANGE
#> 4 Potatoes are not fruit <NA>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句