R data.table join:连接表中的SQL“select *”类似语法?

前端之家收集整理的这篇文章主要介绍了R data.table join:连接表中的SQL“select *”类似语法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个包含许多字段的data.tables.

我想加入这两个表,添加一些计算字段并附加第一个,第二个或两个表中的所有其他字段(类似于sql的select ab AS sum,DT1.*,DT2.* FROM …)而不键入所有字段名称.

我该怎么做(关于最简单的语法和最佳性能)?

简化的示例数据:

library(data.table)
DT1 = data.table(x=c("c","a","b","b"),a=1:5)
DT2 = data.table(x=c("d","c",b=6:8)

现在我想加入表并添加一个计算字段:

DT1[DT2,.(sum=a + b,<<< how to say DT1.*,DT2.* here? >>> ),on="x"]

2016年5月4日更新:
用户jangorecki的启发,我发现了一个功能请求:

Should be able to refer to i’s .SD during a join

解决方法

这应该准确地满足您的需求.
它使用非常强大的R功能,称为计算语言(或元编程),在官方 R Language Definition手册中有详细描述.这是R语言的一个特殊功能,不应该忘记IMO.
library(data.table)
DT1 = data.table(x=c("c",b=6:8)

jj = as.call(c(
    list(as.name(".")),list(sum = quote(a+b)),lapply(unique(c(names(DT1),names(DT2))),as.name)
))
print(jj)
#.(sum = a + b,x,a,b)
DT1[DT2,eval(jj),on="x"]
#   sum x  a b
#1:  NA d NA 6
#2:   8 c  1 7
#3:  11 b  3 8
#4:  13 b  5 8

猜你在找的MsSQL相关文章