基于字符串条件的过滤行dplyr过滤器包含

时间:2020-10-12 19:25:49

标签: filter dplyr contains

我想使用dplyr contains()和filter过滤数据帧。必须简单吧?我看过的示例使用的是R grepl基,它使对象失效。这是一个简单的数据框:

site_type <- c('Urban','Rural','Rural Background','Urban Background','Roadside','Kerbside')
df <- data.frame(row_id, site_type)
df <- as.tibble(df)
df

现在,我想按site.type包含字符串background的所有行来过滤数据框。 如果我知道site_type的唯一值,则可以直接找到字符串:

filtered_df <- filter(df, site_type == 'Urban Background')

但我想做类似的事情:

filtered_df <- filter(df, site_type(contains('background', match_case = False)))

任何想法该怎么做? dplyr helper contains只能用于列而不可以用于行吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

dplyr中的contains功能是选择助手。目的是在使用select函数时提供帮助,而select函数专注于选择列而不是行。请参阅文档here

filter是用于选择行的预期机制。您可能正在寻找的功能是grepl,它可以对文本进行模式匹配。

所以您正在寻找的解决方案可能是:

filtered_df <- filter(df, grepl("background", site_type, ignore.case = TRUE))

我怀疑contains主要是将grepl应用于列名的包装器。因此逻辑非常相似。

参考: