結果のデータセットをマージした後、同じ数の非欠損値がありません (マージした変数には、どちらのデータセットにも重複がありません)。代わりに、同じ数の欠損値があります。つまり、72229 個のスプリアス値が得られます。 2 番目のデータセットの値。
2 番目のデータセットには、そのスプリアス値を持つ行が 1 つだけあり、完全に正常に見えます。その値を欠損値に設定すると、目的の結果が得られます (1 つの欠損値を除く)。その値を 1000 に設定すると、結果は 72229 かける 1000 になります。それで、その行のことかと思ったのですが、その行と他の行を使って再現可能な例を作ろうとすると、エラーは発生しません。
私はデータの十分に小さなサブセットで再現可能な例を作成することに失敗し、それを快適に共有できなかったので、私は主に賢明なアドバイスを求めています. 問題を再現する方法についてのアドバイスもいいでしょう。
> table(is.na(cogdj$int.youth))
FALSE TRUE
1731 178
> sum(duplicated(soep$PERSNR))
[1] 0
> sum(duplicated(cogdj$PERSNR))
[1] 0
> soep = merge(soep,cogdj[,c('PERSNR','ana','ded','mat','ari','int.youth')],by="PERSNR",all.x=T,incomparables=NA)
> table(is.na(soep$int.youth))
FALSE TRUE
73959 178
> nrow(soep[which(round(soep$int.youth,20)==1.6737269266506955567),])
[1] 72229
> nrow(cogdj[which(round(cogdj$int.youth,20)==1.6737269266506955567),])
[1] 1
> cogdj[which(round(cogdj$int.youth,20)==1.6737269266506955567),c('PERSNR','int.youth')]
PERSNR int.youth
1 609104 1.673727