包含单词的过滤器

时间:2018-02-27 12:11:51

标签: r

我在R上创建了一列如下所示的路径:

Path
Adam > Bob > Jeff
Bob > Sarah > Kevin
Adam > Sarah > Kevin
Jeff > Adam > Bob
Adam > Kevin > Jeff

如何过滤列,因此它只包含涉及Jeff的路径:

Path
Adam > Bob > Jeff
Jeff > Adam > Bob
Adam > Kevin > Jeff

1 个答案:

答案 0 :(得分:1)

我们可以使用grep [使用[,默认情况下drop = TRUE - 因此,我们需要将其更改为drop = FALSE以避免一列/一行数据集转换为vector

df1[grep("\\bJeff\\b", df1$Path, ignore.case = TRUE),, drop = FALSE]

subset,我们不必默认使用drop = FALSE FALSE

subset(df1, grepl("\\bJeff\\b", Path, ignore.case = TRUE))
#                 Path
#1   Adam > Bob > Jeff
#4   Jeff > Adam > Bob
#5 Adam > Kevin > Jeff

我们匹配的模式将是“Jeff”,但为了使其更加严格,即不匹配“Jeffy”或“Jefferson”,我们可以在单词之前和之后添加单词边界(\\b)。