我有一个关于根据另一个data.table中的信息向data.table添加列的问题。
这就是我的数据的外观:
数据表1(足球比赛)
TeamcodeHome TeamcodeAway GoalsHome GoalsAway Season
1 2 5 0 2006
数据表2(足球队收到的牌):
Teamcode Season Red Yellow
1 2005 1 15
2 2005 3 10
1 2006 4 16
2 2006 1 4
现在我想在datatable中使用以下函数,如果我想基于另外一列添加一列:
dt.1[dt.2, on="Teamcode", RedCards:=Red]
但现在有两个需要匹配的变量。团队代码和季节。这是如何运作的?
答案 0 :(得分:0)
帮助页?data.table
说明了on
参数:
指明
i
中的哪些列应与x
中的列相关联 与要加入的二元运算符的类型。如果指定,这个 覆盖x
和i
上设置的键。有多种方式 指定参数:
- 作为字符向量,例如
中X[Y, on=c("a", "b")]
。这假设这两列都出现在X
和Y
。- 作为命名字符向量,例如
X[Y, on=c(x="a", y="b")]
。当连接的列名在两者之间不同时,这很有用 表。
注意:如果列X[Y, on=c("a", y="b")]
是"a"
,也可以.()
这两个表之间很常见。- 为了方便交互方案,还可以将
X[Y, on=.(a, b)]
语法用作dt.1[dt.2, on = .(TeamcodeHome = Teamcode, Season), RedCardsHome := Red][]
。
(它还推荐小插图Secondary indices and auto indexing。)
所以,这可能是两列的可能联接:
TeamcodeHome TeamcodeAway GoalsHome GoalsAway Season RedCardsHome
1: 1 2 5 0 2006 4
List<String> compileLibraries() { // ... parse yaml and return list } dependencies { compile compileLibraries() }