根据不等式条件连接两个数据集

ani*_*ana 3 merge join r dataset sqldf

我使用下面的调用根据不等式条件“加入”我的数据集:

library(sqldf)

sqldf("select *
from dataset1 a,
dataset2 b
a.col1 <= b.col2")
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法可以在没有sqldf 的情况下做到这一点?

到目前为止,我只能看到基于特定公共列上的简单联接的合并函数。

谢谢!

Aru*_*run 5

非等(或条件)连接最近在 data.table 中实现,并在当前开发版本 v1.9.7 中可用。请参阅此处的安装说明。

require(data.table) # v1.9.7+
setDT(dataset1) # convert to data.tables
setDT(dataset2)
dataset1[dataset2, on=.(col1 < col2), nomatch=0L]
Run Code Online (Sandbox Code Playgroud)

对于 的每一行dataset2,在根据提供给参数的条件进行连接时查找匹配的行索引on,并返回这些匹配行的所有列。