Как указать "не содержит" в фильтре 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".
Итак, как мне указать вышесказанное, когда я действительно хочу исключить строки, содержащие те, которые находятся за пределами страны или провинции?

Ответы

Ответ 1

Обратите внимание, что %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("-")). Поскольку вы имеете дело с символьным вектором, который не может быть принудительно применен к числовому или сложному, вы не можете использовать -.