只是不知道是否有一个有效的方式做到外与数据表连接,如外连接data.table [R
a <- data.table(a=c(1,2,3),b=c(3,4,5))
b <- data.table(a=c(1,2),k=c(1,2))
merge(a,b,by="a",all.x=T)
这工作得很好,但它是效率不高的内部与大数据结合,因为以下运行速度非常快,但上面的速度非常慢。
setkey(a,a)
setkey(b,a)
a[b,]
只是不知道是否有一个有效的方式做到外与数据表连接,如外连接data.table [R
a <- data.table(a=c(1,2,3),b=c(3,4,5))
b <- data.table(a=c(1,2),k=c(1,2))
merge(a,b,by="a",all.x=T)
这工作得很好,但它是效率不高的内部与大数据结合,因为以下运行速度非常快,但上面的速度非常慢。
setkey(a,a)
setkey(b,a)
a[b,]
在第一种情况下,'a'和'b'是不加键的,所以'merge'需要先键入它们(作为本地拷贝(种类)),因为它不想改变'a'和' b'在调用范围内)。在第二种情况下,你很乐意通过键入它们来改变'a'和'b'(你是否有时间这么做?),然后'a [b]'快。但即使如此,我惊讶有很大的差异。合并_应该与'x [y]'相当。在谈论计时时请注明版本信息:您是否在v1.8.6上?而且你的“非常快”和“非常慢”可能是我的“相似”的想法!什么是实际时间? –
这很容易导致严重/不恰当的基准测试,因此我们绝对需要在说出任何内容之前查看您的计时方法。 –
我无法为此提供时间,因为第一次爆炸在记忆中并且撞毁了R会话(加入了大约19米线)。我会用一个较小的集合对它进行基准测试并发布结果。 (版本1.8.2,我正在使用) – jamborta