ローリング ジョインが機能する方法についてもう少し理解しようとしていますが、混乱しています。誰かがこれを明確にしてくれることを願っていました。具体例を挙げると:
dt1 <- data.table(id=rep(1:5, 10), t=1:50, val1=1:50, key="id,t")
dt2 <- data.table(id=rep(1:5, 2), t=1:10, val2=1:10, key="id,t")
data.table
これにより、値dt2
がロールされる long が生成されると予想されました。
dt1[dt2,roll=TRUE]
代わりに、これを行う正しい方法は次のようです。
dt2[dt1,roll=TRUE]
data.table
私は明らかに正しく理解していないので、誰かが参加のしくみについて詳しく説明してくれませんか。dt1[dt2,roll=TRUE]
これは に相当する sql に対応すると思いましたがselect * from dt1 right join dt2 on (dt1.id = dt2.id and dt1.t = dt2.t)
、locf の機能が追加されています。
さらに、ドキュメントには次のように記載されています。
X[Y] is a join, looking up X's rows using Y (or Y's key if it has one)
as an index.
これにより、行われている結合が外部結合ではなく内部結合である場合に、X のものだけを返す必要があるように見えます。roll=T
その特定id
が存在しない場合はどうなりdt1
ますか?もう少し遊んでみると、列にどのような値が設定されているのかわかりません。