1. ホーム
  2. database

2つのデータフレームが等しいかどうかを確認する方法 [重複]について

2023-09-14 17:42:25

質問

Rで大きなデータセットを持っていて、そのうちの2つが同じかどうかを知りたいだけだとします。同じ結果を得るために異なるアルゴリズムを試しているときによく使います。例えば、以下のようなデータセットがあるとします。

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() を使ってデータセットを比較することは、私には理想的とは思えません。 2つのデータフレームが同一であるかどうかを確認するにはどうすればよいですか?

追伸: これは以下のものと重複していないことに注意してください。 R - 複数のデータセットを比較する , Rで2つのデータセットを比較する または Rでデータセットを比較する

どのように解決するのですか?

all.equalで検索してみてください。ライダーもいますが、うまくいくかもしれません。

all.equal(df3,df4)
# [1] TRUE
all.equal(df2,df1)
# [1] TRUE