我想使用data.table做一个完整的笛卡尔连接,但运气不大。笛卡儿加入data.table
代码:
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)
预期输出:
merge(data.frame(a),data.frame(b),all.x=TRUE,all.y=TRUE)
我试图merge(a,b,allow.cartesian=TRUE)
但它给了我下面的错误 - “Error in merge.data.table(a, b, allow.cartesian = TRUE) : A non-empty vector of column names for
由is required.
”
我正在使用“R version 3.0.1 (2013-05-16)
”包含最新的data.table
包。任何帮助将不胜感激!
问候
这看起来更像是一个比'merge'-问题的'expand.grid'样的问题。你没有共同的变量。 –
所需的输出是通过使用合并函数的笛卡尔连接实现的,但它适用于data.frame,如果可能的话,我正在寻找data.table解决方案。 – Manoj
我通常会添加一个虚拟变量,通过该变量进行合并,并具有'allow.cartesian = TRUE'。 'CJ'和'expand.grid'可以交叉连接矢量,但我永远找不到一个基本函数来创建两个表的交叉连接。任何人都可以指出这样的功能,如果它存在? – TheComeOnMan