2017-06-05 115 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 
相關問題