r - 根据列名合并data.tables

标签 r data.table

我正在尝试与 data.tables 进行一些左连接合并。
包装说明引用了

In all joins the names of the columns are irrelevant; the columns of x's key are joined to in order



我知道我可以使用 .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")

我想要这个输出:
#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

我很高兴使用 [data.table:::merge但我想要一个不修改 DT 的选项或 DT1 (例如更改列名并调用合并并将其更改回来)

最佳答案

更新:数据表 v1.9.6(2015 年 9 月 19 日发布),merge.data.table()确实接受并很好地处理参数 by.x=by.y= . Here's an updated link到下面提到的 FR(现已关闭)。

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

FR#2033 Add by.x and by.y to merge.data.table

没有什么可以阻止它。只是没有完成的事情。我很少需要 merge并且在更广泛地意识到它的有用性方面很慢。我们在带来merge方面取得了很好的进展性能快如 X[Y] ,并且此功能请求具有最高优先级。如果您希望更快,欢迎您将这些参数添加到 merge.data.table并自己提交更改。我们尽量保持源代码简短并集中在一个函数/文件中,因此通过查看 merge.data.table source 希望你可以关注它,看看需要做什么。

关于r - 根据列名合并data.tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069796/

相关文章:

r - 在 fread 中跳过并自动启动

r - data.table 中的等值联接和滚动联接

r - data.table 和自动完成的兼容性

r - GGPlot2:按条件分组的误差线

r - Shiny - 根据用户输入更改绘图上的变量

使用等宽系列字体在 R 中渲染图不再显示字符

r - 如何向 nlm 提供梯度(或 hessian)?

r - 根据 r 中的年龄确定出生日期

r - 使用 .SD 在 data.table 中进行持久分配

r - 在 R 中使用 data.table 包对列求和 - 获取 GForce sum(gsum) 错误