假设我在 R 中有大型数据集,我只想知道其中两个是否相同。当我尝试不同的算法以达到相同的结果时,我经常使用它。例如,假设我们有以下数据集:
df1 <- data.frame(num = 1:5, let = letters[1:5])
df2 <- df1
df3 <- data.frame(num = c(1:5, NA), let = letters[1:6])
df4 <- df3
所以这就是我用来比较它们的方法:
table(x == y, useNA = 'ifany')
当数据集没有 NA 时效果很好:
> table(df1 == df2, useNA = 'ifany')
TRUE
10
但当他们有 NA 时就不那么重要了:
> table(df3 == df4, useNA = 'ifany')
TRUE <NA>
11 1
在示例中,很容易将其NA
视为不是问题,因为我们知道两个数据帧是相等的。问题是NA == <anything>
产生NA
,所以只要其中一个数据集有NA
,不管另一个数据集在同一位置有什么,结果总是NA
。
因此,table()
用于比较数据集对我来说似乎并不理想。如何更好地检查两个数据帧是否相同?
PS:注意这不是R 的副本 - 比较几个数据集,比较 R 中的 2 个数据集或比较 R中的数据集