2015-12-23 3 views
15

Я совершенно новой для Р.Как указать «не содержит» в dplyr фильтр в R

Использование таблицы называется SE_CSVLinelist_clean, я хочу, чтобы извлечь строки, где переменная where_case_travelled_1 не содержит строки "Outside Canada" ИЛИ "Outside province/territory of residence but within Canada". Затем создайте новую таблицу с именем SE_CSVLinelist_filtered.

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
where_case_travelled_1 %in% -c('Outside Canada','Outside province/territory of residence but within Canada')) 

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

Большое спасибо

+10

Если вы хотите, чтобы вы часто использовали «не содержит», вы можете определить свою собственную функцию. Например, '\'% notin% \ '= function (x, y)! (X% in% y)'. Затем вы можете сделать 'x% notin% y' вместо'! (X% in% y) '. – eipi10

ответ

32

Обратите внимание, что %in% возвращает логический вектор TRUE и FALSE. Для того, чтобы свести на нет, вы можете использовать ! перед логическим утверждением:

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
!where_case_travelled_1 %in% 
    c('Outside Canada','Outside province/territory of residence but within Canada')) 

Что касается оригинального подхода с -c(...), - является унарный оператор, который «выполняет арифметические на числовых или комплексных векторов (или объектов, которые могут быть принуждены к ним) "(от help("-")). Поскольку вы имеете дело с символьным символом, который не может быть принудительно применен к числовому или сложному, вы не можете использовать -.

Смежные вопросы