如何消除R中具有某些值的行?

问题描述 投票:-1回答:2

我正在尝试消除数据集中具有可变收入值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,而在另一种情况下却没有考虑NA,怎么可能呢?

谢谢您的帮助!

r dataframe na
2个回答
1
投票

您可以这样使用%in%

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

或使用is.na()测试NA

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

要了解为什么 R的行为类似,我建议以下常见问题解答:Logical operators (AND, OR) with NA, TRUE and FALSEDealing with TRUE, FALSE, NA and NaN


0
投票

Tidyverse是完成此类任务的理想选择:

library(tidyverse)

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

result <- allregions %>%
  filter(!income %in% c(0, NA))
© www.soinside.com 2019 - 2024. All rights reserved.