识别具有缺失值的2个数据帧中的差异

时间:2014-10-24 02:46:11

标签: r

假设我有2个数据框:

a1 <- data.frame(a = 1:5, b=2:6)
a2 <- data.frame(a = 1:5, b=c(2:5,NA))

我想确定哪些列不相同(稍后我需要列号)。我认为这可以解决问题:

apply(!a1==a2, 2, sum, na.rm=TRUE)

但是,因为a2中的最后一个条目是NA,所以它不起作用。

2 个答案:

答案 0 :(得分:2)

不确定您使用sum的原因,但要确定哪些列不相同,您可以mapply使用identical并取消结果。

which(!mapply(identical, a1, a2))
# b 
# 2 

表示列号。或者更简单地用于列子集

!mapply(identical, a1, a2)
#     a     b 
# FALSE  TRUE 

正如注释一样,单词相同在R中的含义可能与==的结果不同,因此您可能需要稍微澄清一下您的问题。

x <- 1
y <- 1L
x == y
# [1] TRUE
identical(x, y)
# [1] FALSE

答案 1 :(得分:0)

如果您想使用sum,可以尝试

  colSums(a1==a2, na.rm=TRUE)!=nrow(a1)
  #  a     b 
  #FALSE  TRUE 

或使用您的代码

 apply(a1==a2, 2, sum, na.rm=TRUE)!=nrow(a1)
 #  a     b 
 #FALSE  TRUE