2017-06-05 75 views
0

我有一个问题,就是根据另一个data.table中的信息向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 

现在我会使用以下函数在数据表中如果我想添加一列基于其他列:

dt.1[dt.2, on="Teamcode", RedCards:=Red] 

但是现在有两个需要匹配的变量。团队代码和季节。这个怎么用?

回答

0

帮助页面?data.table说,有关的on参数:

指明哪些列i应列x沿着 被加入了与二进制运算符的加盟与类型。指定时,此 将覆盖在xi上设置的密钥。 有多种方式指定参数:

  • 作为字符向量,例如X[Y, on=c("a", "b")]。假定这两列都出现在XY中。
  • 作为命名字符向量,例如,X[Y, on=c(x="a", y="b")]。当两个 表之间的连接列名不同时,这非常有用。
    NB:也是可能的,如果列"a"是 两个表之间的共同点。
  • 为了方便在交互式场景中,还可以使用.()语法作为X[Y, on=.(a, b)]

(委员会还建议小插曲Secondary indices and auto indexing

所以,这将是一个可能的连接上的两列:

dt.1[dt.2, on = .(TeamcodeHome = Teamcode, Season), RedCardsHome := Red][] 
TeamcodeHome TeamcodeAway GoalsHome GoalsAway Season RedCardsHome 
1:   1   2   5   0 2006   4 
相关问题