unter der Bedingung fusionieren Ich habe folgende Daten:Wie alle Elemente einer Liste mit einer anderen Datentabelle
library(data.table)
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
dt_main <- data.table(var1 = c("wk1","wk2"),
var4 = c(100,200))
ich alle Elemente lista
zu merge
will, den die variable var1
mit den dt_main
data.table
enthält, so in Am Ende habe ich lista
zu sehen wie folgt möchte:
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3),
var4 = c(100,100,200))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
ich versuchte
mapply(function(X,Y){
if("var1"%in%names(X)){
X <- merge(X,Y,by="var1")
}
},X=lista,Y=dt_main)
aber es funktioniert nicht. Irgendeine Hilfe ?
ein bisschen zu spät, b Ich habe eine etwas andere Variante gefunden: 'lapply (lista, Funktion (x) if ('var'% in% Namen (x)) x [dt_main, on = 'var1', var4: = var4] sonst x) ' – Jaap
Eine weitere nette Möglichkeit zum Zusammenführen :). Möchtest du als Antwort @Jaap posten? – LyzandeR
fertig :-) (und korrigiert einen Typ in meiner Lösung) – Jaap