r - data.table 中的笛卡尔连接

标签 r 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 by is required.

我正在使用“R version 3.0.1 (2013-05-16)”和最新的 data.table包。任何帮助将不胜感激!

问候

最佳答案

我认为更好的解决方案是:

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

关于r - data.table 中的笛卡尔连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19440769/

相关文章:

R data.table 范围,使用变量可靠地引用未知列名

R 函数根据另一组值评估 data.table 列中的值

R:更新 data.table 中的列

r - 如何在 dplyr 中使用 recode_factor 来重新编码多个因子值?

r - 将 R 包安装到特定目录

R - 仅按时间子集数据帧

r - data.table:i 中逻辑条件的馈送列表

R:添加多条回归线和黄土曲线来绘制

Remacs-ESS 未在 mac 上绘图

r - 删除 data.table 中的行,其中列不会更改为前一行