簡體   English   中英

在data.table中添加一列,並在另一個data.table中查找值(基於兩個相似的列)

[英]Adding a column in data.table with looking up a value in another data.table (based on TWO similar columns)

我有一個關於基於另一個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

現在,如果要基於其他1列添加一列,我將在數據表中使用以下函數:

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

但是現在有兩個變量需要匹配。 Teamcode和Season。 這是如何運作的?

幫助頁面?data.table說明了on參數:

指示應將i哪些列與x列以及要與之結合的二進制運算符的類型結合在一起。 指定后,它將覆蓋xi上設置的鍵。 有多種方法指定參數:

  • 作為字符向量,例如X[Y, on=c("a", "b")] 假定這兩個列都出現在XY
  • 作為命名字符向量,例如X[Y, on=c(x="a", y="b")] 當兩個表之間要聯接的列名不同時,這很有用。
    注意:如果列"a"在兩個表之間是公用的,則X[Y, on=c("a", y="b")]也可能。
  • 為了方便交互場景,也可以將.()語法用作X[Y, on=.(a, b)]

(它還建議使用小插圖二級索引和自動索引 。)

因此,這可能是兩列上的連接:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM