несоответствие в filter () с использованием! = и == - PullRequest
0 голосов
/ 13 июля 2020

Используя приведенный ниже набор данных, мне не удается удалить строки со значением «Not a stewardship group» в поле «Research». Основываясь на предыдущем анализе с использованием table(X$Research), я знаю, что количество строк, которые следует пропустить, равно 12. Если я использую пакет dplyr для выполнения filter(X, Research == "Not a stewardship group"), на выходе будет 12 строк с отфильтрованным значением. Однако, если я запускаю filter(X, Research != "Not a stewardship group"), удаляется 48 строк вместо 12.

Если я выполняю X[X$Research != "Not a stewardship group",], количество удаленных строк считается правильным, 12.

В чем может быть причина того, что команда filter() ведет себя подобным образом при использовании логического оператора "! ="?

data: X <- structure(list(Research = structure(c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, NA, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 3L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, NA, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, NA, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, NA, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, NA, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, NA, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 4L, 4L, 4L, NA, 4L, 4L, 4L, NA, 4L, 4L, NA, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("N - 10%", "N - 5%", "Not a stewardship group", "Y"), class = "factor")), row.names = c(NA, 719L), class = "data.frame")

1 Ответ

0 голосов
/ 13 июля 2020

Как упоминалось в этой ветке , оказывается, что проблема заключалась в значениях filter() исключает NA по умолчанию, поэтому 36 строк с NA также были исключены. Переключение условий фильтра на filter(X, Research != "Not a stewardship group" | is.na(Research)) помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...