首页 > 解决方案 > 使用 R 比较数据框中的两列

问题描述

我正在尝试比较数据框中的两列以查找两列不相等的行。

我会做:

df %>% filter(column1 != column2)

这将为我提供两列中都存在值且不相等的情况(例如 column1 = 5,column2 = 6)

但是,它不会给我其中一个值为 NA 的情况(例如 column1 = NA,column2 = 7)

如何将后一种情况包含在过滤器功能中?

谢谢

标签: rdplyr

解决方案


或使用xor

df %>% filter(a != b | xor(is.na(a), is.na(b)))

或者正如@thelatemail 提到的,您可以使用Base R:

df[which(df$a != df$b | xor(is.na(df$a), is.na(df$b))),]

或者正如@runr 提到的,您可以subset在Base R 中尝试:

subset(df, a != b | xor(is.na(a), is.na(b)))

推荐阅读