2017-03-04 19 views
0

更新後數據表我有兩個數據表:R:右數據表

library(data.tables) 

dt1 <- data.table(A = letters[1:5], X = 1:5) 
    A X 
1: a 1 
2: b 2 
3: c 3 
4: d 4 
5: e 5 

dt2 <- data.table(A = c("a", "c", "e"), X = 9:11) 
    A X 
1: a 9 
2: c 10 
3: e 11 

所有我想要做的是基於DT2更新DT1。我想:

merge(dt1, dt2, all.x = T, by = "A") 
    A X.x X.y 
1: a 1 9 
2: b 2 NA 
3: c 3 10 
4: d 4 NA 
5: e 5 11 

但它創造了兩個新的變量(X.xX.y),而原來想消失(X)。這就是我要找的輸出:

A X 
1: a 9 
2: b 2 
3: c 10 
4: d 4 
5: e 11 

什麼是最短的語法?我必須多次運行這個過程。

+0

我不'不認爲有'庫(data.tables)' – Frank

回答

1

您可以使用data.tablejoin語法,用更新的方法:=(這裏i.Xdt2X變量,用它來更新dt1X變量,他們的列A比賽):

dt1[dt2, X := i.X, on = .(A)] 
dt1 
# A X 
#1: a 9 
#2: b 2 
#3: c 10 
#4: d 4 
#5: e 11