I am trying to do a full Cartesian join using data.table but with little luck.
Code:
a = data.table(dt=c(20131017,20131018))
setkey(a,dt)
b = data.table(ticker=c("ABC","DEF","XYZ"),ind=c("MISC1","MISC2","MISC3"))
setkey(b,ticker)
Expected output:
merge(data.frame(a),data.frame(b),all.x=TRUE,all.y=TRUE)
I have tried merge(a,b,allow.cartesian=TRUE)
but it gives me following error - "Error in merge.data.table(a, b, allow.cartesian = TRUE) : A non-empty vector of column names for
byis required.
"
I am using "R version 3.0.1 (2013-05-16)
" with latest data.table
packages. Any help would be greatly appreciated!
Regards
I think a better solution is:
a[,as.list(b),by=dt]
dt ticker ind
1: 20131017 ABC MISC1
2: 20131017 DEF MISC2
3: 20131017 XYZ MISC3
4: 20131018 ABC MISC1
5: 20131018 DEF MISC2
6: 20131018 XYZ MISC3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With