Ich habe zwei data.tables:Zuordnen einer Teilmenge von einer data.table auf eine Teilmenge eines anderen data.table
library(data.table)
dt1 <- data.table(A=1:10, B=1, C=2, D=3)
dt2 <- data.table(A2=5:9, B2=4, C2=5, D2=6)
Ich möchte Elemente der Spalte B2 und C2 in dt2 bis Spalte B und C zugewiesen in DT1, wobei A = A2, so dass ich eine Tabelle, die wie folgt aussieht:
dt1
# A B C D
# 1: 1 1 2 3
# 2: 2 1 2 3
# 3: 3 1 2 3
# 4: 4 1 2 3
# 5: 5 4 5 3
# 6: 6 4 5 3
# 7: 7 4 5 3
# 8: 8 4 5 3
# 9: 9 4 5 3
# 10: 10 1 2 3
ich weiß, dass ich eine Spalte zu einer Zeit zuordnen:
id1 <- which(dt1$A %in% dt2$A2)
id2 <- which(dt2$A2 %in% dt1$A)
dt1$B[id1] <- dt2$B2[id2]
dt1$C[id1] <- dt2$C2[id2]
jedoch scheint dies eine Menge Codezeilen zu sein, um nur sehr wenig zu tun, besonders wenn ich viele Spalten habe.
Ich dachte so etwas wie
# Not working:
dt1[id1][,list(B,C)] <- dt2[id2][,list(B2,C2)]
funktionieren würde, aber ich erhalte eine Fehlermeldung.
Gibt es einen klügeren, schöneren Weg, es zu tun?