比较包含NAs

时间:2017-09-26 07:31:00

标签: r

我有一个包含两列的数据框:

x <- c(1, 2, 3, 4, NA, 5, 6)
y <- c(1, 2, 4, 5, 0, 5, 6)

my.df <- data.frame(x, y)

我想只保留x!= y的行。

我做的是:

my.df <- subset(my.df, x != y)

我的期望是:

x  y
3  4
4  5
NA 0

我得到的是

x  y
3  4
4  5

这是因为,通过一个奇怪的惯例,NA != 0NA

我真的想将NA保留在子集中,因为我正在寻找列之间的差异。

如何实现这一目标?

2 个答案:

答案 0 :(得分:5)

这也可行。 仅选择x和y的减法与零不同的行

my.df[!((x-y) %in% 0 ),]

答案 1 :(得分:4)

一种选择是创建|条件,以便为{x'

获取NA
subset(my.df, x != y | is.na(x))

如果'y'中还有NA元素

subset(my.df, x != y | is.na(x)|is.na(y))

不清楚'x'和'y'都是NA的情况。如果需要取出它们是相同的

subset(my.df, (x != y | is.na(x)|is.na(y)) & !(is.na(x) & is.na(y)))