快速 SQL 类似加入的列添加到 R 中的 data.table
quick SQL Join-like adding columns to a data.table in R
我想要实现的与 SQL 类似
select *
from T left join
T2 on T1.key2 = T2.key2
left join T3 on T1.key3 = T3.key3
但在 R 中使用 data.table
。具体来说,T2 的 'append' two 列和 T3 的 one 列到第一个 table.
我目前的解决方案看起来像
setkey(t1,key2)
t1 <- t2[t1]
setkey(t1,key3)
t1 <- t3[t1]
setkey(t1,key1) # restore the original key
这会将整个 t1 复制两次,而且不会太快。 'inside' t1 是一个相当大的数据集 ~ 100 万行,t2 和 t3 很小 'mapping' tables.
我认为使用 J(..)
会有所帮助,但我是 data.tables 的新手,无法真正理解如何在此处应用它。
有人可以建议一个更快的加入解决方案吗?谢谢
自从 devel version of data.table, v1.9.5 最近实施了一项功能,可以直接加入 data.tables 而无需使用新的 on
参数设置密钥,我可以为您提供高质量的答案问题:
t1[t2, colT2 := i.colT2, on = c(key2="key2")
][t3, colT3 := i.colT3, on = c(key3="key3")
][]
它还应该保留 t1
上的原始密钥。
我想要实现的与 SQL 类似
select *
from T left join
T2 on T1.key2 = T2.key2
left join T3 on T1.key3 = T3.key3
但在 R 中使用 data.table
。具体来说,T2 的 'append' two 列和 T3 的 one 列到第一个 table.
我目前的解决方案看起来像
setkey(t1,key2)
t1 <- t2[t1]
setkey(t1,key3)
t1 <- t3[t1]
setkey(t1,key1) # restore the original key
这会将整个 t1 复制两次,而且不会太快。 'inside' t1 是一个相当大的数据集 ~ 100 万行,t2 和 t3 很小 'mapping' tables.
我认为使用 J(..)
会有所帮助,但我是 data.tables 的新手,无法真正理解如何在此处应用它。
有人可以建议一个更快的加入解决方案吗?谢谢
自从 devel version of data.table, v1.9.5 最近实施了一项功能,可以直接加入 data.tables 而无需使用新的 on
参数设置密钥,我可以为您提供高质量的答案问题:
t1[t2, colT2 := i.colT2, on = c(key2="key2")
][t3, colT3 := i.colT3, on = c(key3="key3")
][]
它还应该保留 t1
上的原始密钥。