Luc*_*ess 1 r contains filter dplyr
我想使用 dplyr contains() 和过滤器过滤数据帧。一定很简单吧?我见过的例子使用了基本的 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
Run Code Online (Sandbox Code Playgroud)
现在我想按 site.type 包含字符串背景的所有行过滤数据框。如果我知道 site_type 的唯一值,我可以直接找到该字符串:
filtered_df <- filter(df, site_type == 'Urban Background')
但我想做一些类似的事情:
filtered_df <- filter(df, site_type(contains('background', match_case = False)))
有什么想法如何做到这一点吗?dplyr 助手contains只能用于列而不是行吗?
dplyr 中的函数contains是一个选择助手。它的目的是在使用该select函数时提供帮助,并且该select函数的重点是选择列而不是行。请参阅此处的文档。
filter是选择行的预期机制。您可能正在寻找的功能是grepl对文本进行模式匹配。
所以您正在寻找的解决方案可能是:
filtered_df <- filter(df, grepl("background", site_type, ignore.case = TRUE))
Run Code Online (Sandbox Code Playgroud)
我怀疑这主要是应用于列名称的contains包装器。grepl所以逻辑非常相似。
参考: