根据列名合并data.tables

sta*_*ant 13 r data.table

我正在尝试与data.tables进行一些左连接合并.包描述引用

在所有连接中,列的名称无关紧要; x键的列按顺序连接

我明白我可以使用.data.table[data.table:::merge.data.table

我想要的是:合并X和Y指定键(如基础合并中的by.x和by.y, - >为什么要取消它?)

我想我有

DT = data.table(x=rep(c("a","b","c"),each=3),y=c(1,3,6),v=1:9,key="x,y,v")
DT1 = data.frame(x1=c("aa","bb","cc"),y1=c(1,3,6),v1=1:3,key="x1,y1,v1")
Run Code Online (Sandbox Code Playgroud)

我希望这个输出:

#data.table:::merge is masking I don't know how to call the base version of merge anymore
R) {base::merge}(DT,DT1,by.x="y",by.y="y1") 
y x v x1 v1
1 1 a 1 aa  1
2 1 c 7 aa  1
3 1 b 4 aa  1
4 3 a 2 bb  2
5 3 b 5 bb  2
6 3 c 8 bb  2
7 6 b 6 cc  3
8 6 a 3 cc  3
9 6 c 9 cc  3
Run Code Online (Sandbox Code Playgroud)

我很乐意使用[或者data.table:::merge我想要一个不修改的选项DTDT1(比如更改列名并调用merge并将其更改回来)

Mat*_*wle 8

更新:data.table v1.9.6(2015年9月19日发布)以来,merge.data.table()接受并很好地处理参数by.x=by.y=.这是下面引用的FR(现已关闭)的更新链接.


是的,这是尚未实现的功能请求:

FR#2033将by.x和by.y添加到merge.data.table

没有任何阻止它的东西.只是未完成的事情.我很少需要,merge而且更普遍地意识到它的用处很慢.我们在提高merge性能方面取得了很好的进展X[Y],并且此功能请求具有最高优先级.如果你更喜欢它,我们非常欢迎merge.data.table你自己添加这些参数并提交更改.我们尝试将源代码保存在一个函数/文件中,因此通过查看merge.data.table源代码,您可以关注它并查看需要执行的操作.


sha*_*dow 5

这些参数by.xby.y目前在开发的版本data.table.看到这里.使用devtools::install_github("Rdatatable/data.table", build_vignettes = FALSE)安装的开发版本data.table.