Как удалить строки с определенными значениями в R? - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь удалить строки в моем наборе данных, которые имеют в качестве значений переменного дохода 0 или NA. Запустив две строки кода ниже, я обнаружил, что есть 1039 наблюдений с характеристиками, которые я ищу. В частности, даже если я запрашиваю только доход, равный 0, r автоматически учитывает также значения NA.

length(allregions$income[allregions$emp == 1 & allregions$income == 0])
allregions$income[allregions$emp == 1 & allregions$income == 0]

Однако, когда я пытаюсь удалить эти строки, r удаляет только строки с доходом равно 0 и сохраняет те с NA. Даже если я добавлю NA в условие, эти значения останутся в моем наборе данных.

allregions <- allregions[!(allregions$income == 0 & allregions$emp == 1),]

Как я могу удалить строки с NA в определенном столбце? Кроме того, как это возможно, что, хотя я применяю одно и то же условие, в одном случае R также учитывает NA, а в другом нет?

Заранее благодарен за помощь!

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Tidyverse - отличный пакет для такого рода задач:

library(tidyverse)

result <- allregions %>%
  filter(!is.na(income) & income !=0)

result <- allregions %>%
  filter(!income %in% c(0, NA))
1 голос
/ 21 марта 2020

Вы можете использовать %in% следующим образом:

result <- allregions[!(allregions$income %in% c(0, NA)), ]

Или использовать is.na() для проверки NA

result <- allregions[allregions$income != 0 & !is.na(allregions$income), ]

Чтобы понять почему R ведет себя так же, как и я. Я бы предложил следующие часто задаваемые вопросы: Логические операторы (И, ИЛИ) с NA, TRUE и FALSE , Работа с TRUE, FALSE, NA и NaN

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