目錄
原始文章
data.table是R語言中非常流行且好用的套件,但是它join的方式不是很直覺。常用的join方式如下表。參考資料〈JOINing data in R using data.table〉。
Join類型 | DT | data.table::merge() |
Inner | X[Y, nomatch = 0] | merge(X, Y, all=FALSE) |
Left Outer | Y[X] | merge(X, Y, all.x=TRUE) |
Right Outer | – | merge(X, Y, all.y=TRUE) |
Full Outer | – | merge(X, Y, all=TRUE) |
Full Outer Where Null (Not Inner) | – | merge(X, Y, all=TRUE) |
Cross Join | – | – |
那Cross Join呢?
Cross Join是SQL中的一種Join方式,這個方式會讓資料量瞬間爆增,但某些情況下卻也滿好用的。

來吧,複製貼上
把這個function加到你的codebase中,這樣之後就可以直接使用了,簡潔俐落又帥氣。
dt_cross_join <- function(a, b){
cj = CJ(1:nrow(a),1:nrow(b))
cbind(a[cj[[1]],],b[cj[[2]],])
}