我想使用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
只能用于列而不可以用于行吗?
感谢您的帮助!
答案 0 :(得分:0)
dplyr中的contains
功能是选择助手。目的是在使用select
函数时提供帮助,而select
函数专注于选择列而不是行。请参阅文档here。
filter
是用于选择行的预期机制。您可能正在寻找的功能是grepl
,它可以对文本进行模式匹配。
所以您正在寻找的解决方案可能是:
filtered_df <- filter(df, grepl("background", site_type, ignore.case = TRUE))
我怀疑contains
主要是将grepl
应用于列名的包装器。因此逻辑非常相似。
参考: