我有一个包含两列的数据框:
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 != 0
是NA
。
我真的想将NA保留在子集中,因为我正在寻找列之间的差异。
如何实现这一目标?
答案 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)))