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