我正在尝试创建一个 dplyr 管道来过滤
想象一个数据框jobs,我想从列中过滤出最高级的位置titles:
titles
Chief Executive Officer
Chief Financial Officer
Chief Technical Officer
Manager
Product Manager
Programmer
Scientist
Marketer
Lawyer
Secretary
Run Code Online (Sandbox Code Playgroud)
用于过滤掉它们的 R 代码(直到“经理”)将是......
jobs %>%
filter(!str_detect(title, 'Chief')) %>%
filter(!str_detect(title, 'Manager')) ...
Run Code Online (Sandbox Code Playgroud)
但我仍然想在最终过滤中保留“程序经理”,以生成一个包含所有“较低级别作业”的新数据框,例如
Product Manager
Programmer
Scientist
Marketer
Lawyer
Secretary
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在除一个特定字符串之外的给定值上指定 str_detect() 过滤器?
假设数据框的列有 1000 个角色,具有各种字符串组合,包括“Manager”,但始终会有针对特定异常的过滤器。
Ron*_*hah 10
或者你可以有一个单独的filter“产品经理”
library(tidyverse)
jobs %>%
filter((!str_detect(title, "Chief|Manager")) | str_detect(title, "Product Manager"))
# title
#1 Product Manager
#2 Programmer
#3 Scientist
#4 Marketer
#5 Lawyer
#6 Secretary
Run Code Online (Sandbox Code Playgroud)
也可以使用 R 基体进行扭曲grepl/grep
jobs[c(grep("Product Manager",jobs$title),
grep("Chief|Manager", jobs$title, invert = TRUE)),, drop = FALSE]
Run Code Online (Sandbox Code Playgroud)