このwikipediaの記事に続いてSQL join私はdata.tableとの結合方法を明確にしたいと思っていました。 このプロセスでは、NAsに参加するときにバグを発見した可能性があります。 LEFT OUTERがdata.table double型の結合列にNAを含む内外結合?
R) merge.data.frame(X,Y,all.x=TRUE)
depID name depName
1 31 Raf Sal
2 33 Jon Eng
3 33 Ste Eng
4 34 Rob Cle
5 34 Smi Cle
6 NA Joh <NA>
merge.data.table
ない出力に同じ結果を行うと、私はlign 2.
R) X = data.table(name=c("Raf","Jon","Ste","Rob","Smi","Joh"),depID=c(31,33,33,34,34,NA),key="depID")
R) Y = data.table(depID=c(31,33,34,35),depName=c("Sal","Eng","Cle","Mar"),key="depID")
R) X
name depID
1: Joh NA
2: Raf 31
3: Jon 33
4: Ste 33
5: Rob 34
6: Smi 34
R) Y
depID depName
1: 31 Sal
2: 33 Eng
3: 34 Cle
4: 35 Mar
:ウィキの例を取ると
R) merge(X,Y,all.x=TRUE) depID name depName 1: NA Joh Eng 2: 31 Raf NA 3: 33 Jon Eng 4: 33 Ste Eng 5: 34 Rob Cle 6: 34 Smi Cle R) Y[X] #same -> :( depID depName name 1: NA Eng Joh 2: 31 NA Raf 3: 33 Eng Jon 4: 33 Eng Ste 5: 34 Cle Rob 6: 34 Cle Smi
RIGHT OUTERは を登録しよ
同じ
R) merge.data.frame(X,Y,all.y=TRUE)
depID name depName
1 31 Raf Sal
2 33 Jon Eng
3 33 Ste Eng
4 34 Rob Cle
5 34 Smi Cle
6 35 <NA> Mar
R) merge(X,Y,all.y=TRUE)
depID name depName
1: NA Joh Eng
2: 31 NA Sal
3: 33 Jon Eng
4: 33 Ste Eng
5: 34 Rob Cle
6: 34 Smi Cle
7: 35 NA Mar
のように見えるINNER(NATURAL)はい、それはに関連した(恥ずかしい)新しいバグのように見えます
R) merge.data.frame(X,Y)
depID name depName
1 31 Raf Sal
2 33 Jon Eng
3 33 Ste Eng
4 34 Rob Cle
5 34 Smi Cle
R) merge(X,Y)
depID name depName
1: NA Joh Eng
2: 33 Jon Eng
3: 33 Ste Eng
4: 34 Rob Cle
5: 34 Smi Cle
を(実際にはコメントでした)、defid列が整数の場合、マージは正しく機能します。 –
@MatthewLundberg面白い、ありがとう。なぜそれが削除された、有用な音!それはテストがそれを捕まえなかった理由を説明するでしょう - 私はおそらく整数を使ってNAをテストすることを考えただけです。 –
私はそれに答えることはできませんが、ヒントなしで整数でマージを試みるかどうかはわかりませんでした。回答者はキャラクターも働いていると主張しましたが、私は確認しませんでした。 –