我在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
答案 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
)。