在data.table中添加一列,在另一个data.table中查找一个值(基于两个相似的列)

时间:2017-06-05 14:20:33

标签: r data.table

我有一个关于根据另一个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]

但现在有两个需要匹配的变量。团队代码和季节。这是如何运作的?

1 个答案:

答案 0 :(得分:0)

帮助页?data.table说明了on参数:

  

指明i中的哪些列应与x中的列相关联   与要加入的二元运算符的类型。如果指定,这个   覆盖xi上设置的键。有多种方式   指定参数:

     
      
  • 作为字符向量,例如X[Y, on=c("a", "b")]。这假设这两列都出现在XY
  • 中   
  • 作为命名字符向量,例如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()
}