Фильтрация по совпадению Stringr (str_detect) ИСКЛЮЧИТЬ Для определенного подобного значения в R? - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать конвейер dplyr для фильтрации на

Представьте себе фрейм данных jobs, в котором я хочу отфильтровать самые старшие позиции из столбца titles:

titles

Chief Executive Officer
Chief Financial Officer
Chief Technical Officer
Manager
Product Manager
Programmer
Scientist
Marketer
Lawyer
Secretary

R-код для их фильтрации (до «Менеджера») будет ...

jobs %>% 
filter(!str_detect(title, 'Chief')) %>%
filter(!str_detect(title, 'Manager')) ...

но я хочу сохранить «Диспетчер программ» в окончательной фильтрации, чтобы создать новый фрейм данных со всеми «заданиями более низкого уровня», такими как

Product Manager
Programmer
Scientist
Marketer
Lawyer
Secretary

Есть ли способ указать фильтр str_detect () для данного значения, КРОМЕ для конкретной строки?

Предположим, что столбец фрейма данных имеет тысячи ролей с различными комбинациями строк, включая «Менеджер», но всегда будет фильтр для конкретного исключения.

1 Ответ

0 голосов
/ 13 января 2019

Или у вас может быть отдельный 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

, который также можно скрутить в основании R, используя grepl/grep

jobs[c(grep("Product Manager",jobs$title), 
       grep("Chief|Manager", jobs$title, invert = TRUE)),, drop = FALSE]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...