我正在寻找一个带有数据帧列的函数,检查它是否包含来自字符串向量的文本,并在匹配时过滤它(包括部分文本匹配).
例如,采用以下数据框:
animal |count
aardvark |8
cat |2
catfish |6
dog |12
dolphin |3
penguin |38
prairie dog|59
zebra |17
Run Code Online (Sandbox Code Playgroud)
和以下矢量
c("cat", "dog")
Run Code Online (Sandbox Code Playgroud)
我想通过'animal'列,检查值是否完全或部分匹配向量中的一个字符串,并过滤掉那些不匹配的字符串.结果数据框将是:
animal |count
cat |2
catfish |6
dog |12
prairie dog|59
Run Code Online (Sandbox Code Playgroud)
谢谢!
肖恩
使用dplyr,您可以尝试以下方法,假设您的表是df:
library(dplyr)
library(stringr)
animalList <- c("cat", "dog")
filter(df, str_detect(animal, paste(animalList, collapse="|")))
Run Code Online (Sandbox Code Playgroud)
我个人发现在查看我的代码几个月后使用dplyr和stringr更容易阅读.
我们可以用 grep
df1[grep(paste(v1, collapse="|"), df1$animal),]
Run Code Online (Sandbox Code Playgroud)
或使用 dplyr
df1 %>%
filter(grepl(paste(v1, collapse="|"), animal))
Run Code Online (Sandbox Code Playgroud)