sql - 快速 SQL Join-like 将列添加到 R 中的 data.table

标签 sql r data.table

我想要实现的是类似于 SQL

select *
from T left join
     T2 on T1.key2 = T2.key2
     left join T3 on T1.key3 = T3.key3

但在 R 中使用 data.table。具体来说,将 T2 的列和 T3 的列“附加”到第一个表。
我目前的解决方案看起来像

setkey(t1,key2)
t1 <- t2[t1]
setkey(t1,key3)
t1 <- t3[t1]
setkey(t1,key1) # restore the original key

这会将整个 t1 复制两次,而且不会太快。在“内部”t1 是一个相当大的数据集 ~ 100 万行,而 t2 和 t3 只是小的“映射”表。
我认为使用 J(..) 会有所帮助,但我是 data.tables 的新手,无法真正理解如何在此处应用它。
有人可以建议一个更快的加入解决方案吗?谢谢

最佳答案

devel version of data.table, v1.9.5最近实现了一项无需使用新的 on 参数设置键即可直接加入 data.tables 的功能,我可以为您的问题提供高质量的答案:

t1[t2, colT2 := i.colT2, on = c(key2="key2")
   ][t3, colT3 := i.colT3, on = c(key3="key3")
     ][]

它还应该保留 t1 上的原始 key 。

关于sql - 快速 SQL Join-like 将列添加到 R 中的 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934125/

相关文章:

php - 我这里的错误是什么,显示 SQL 语法错误?

r - r-使用h2o.deeplearning时出现错误消息

r - data.table:如何根据包含列名的分组唯一行值更改列值

r - 标记 data.table 的某些列中具有相同行的组

sql - 如何在 Heroku 上向 PostgreSQL 添加 intarray 扩展

php - MySQL 表间自增

PHP/MySQL计算具有相同外键的项目之间的差异

r - 使用 R 在雅虎财经上查找 Xpath

r - 从字符串创建公式调用

r - 如何识别多列重叠