2017-03-04 4 views
0

Ich habe zwei Datentabellen:R: update links Datentabelle von rechts Datentabelle

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 

Alles, was ich tun möchte, ist Update DT1 basierend auf dt2. Ich habe versucht:

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 

Aber es schafft eine zwei neue Variablen (X.x, X.y), während der ursprüngliche Kauf verschwindet (X). Dies ist die Ausgabe ich suche:

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

Was wäre die kürzeste Syntax sein? Ich muss diesen Prozess mehrmals ausführen.

+0

I don Ich denke, es gibt eine 'Bibliothek (data.tables)' – Frank

Antwort

1

können Sie data.tablejoin Syntax verwenden, mit der Update-Methode := (hier i.X ist die X Variable aus dt2, es verwenden, aktualisieren dt1 ‚s X Variable, in deren Spalte A Ursachen):

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