Скажем, у меня большие массивы данных в 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 или Сравнение наборов данных в R