Seite 1 von 1

Werte von Einer Tabelle in die andere übertragen

Verfasst: Di Okt 02, 2018 10:22 am
von Regression
Guten morgen,

ich suche nach einer eleganten Lösung die Werte aus einer Tabelle in die andere zu übertragen.
Bezugnehmend auf folgende Tabellen:

Code: Alles auswählen

dt1<-data.table(Id1=c(1:10),Value=c(20:29))
dt2<-data.table(Id2=c(1:30),Value2=c(rep("a",5),rep("b",5), rep("c",20)))
Hier möchte ich in die Tabelle dt1 die Werte Value2 aus der Tabelle dt2 anbinden mit Id1==Id2 .

Ich hab einen Workaround gebastelt, wo ich erst die richtigen Werte extrahiere und dann merge.
Aber ich würde es gern gleich richtig machen.

Ich Danke euch im Voraus!
Regression

Re: Werte von Einer Tabelle in die andere übertragen

Verfasst: Di Okt 02, 2018 10:37 am
von jogo
Hallo Regression,

Code: Alles auswählen

merge(dt2, dt1, by.x="Id2", by.y="Id1", all.x=TRUE)
und keine Sorge, das ist nicht das dataframe-merge() ;) - auch wenn es so aussieht.
Oder in data.table-typischer Syntax und in place:

Code: Alles auswählen

library(data.table)
dt1<-data.table(Id1=c(1:10),Value=c(20:29))
dt2<-data.table(Id2=c(1:30),Value2=c(rep("a",5),rep("b",5), rep("c",20)))
# merge(dt2, dt1, by.x="Id2", by.y="Id1", all.x=TRUE)
dt2[dt1, on=c(Id2="Id1"), V:=i.Value][]
Hier ist noch etwas zum Lesen: https://stackoverflow.com/questions/129 ... left-right

Gruß, Jörg

Re: Werte von Einer Tabelle in die andere übertragen

Verfasst: Di Okt 02, 2018 11:01 am
von Regression
Sehr schön!
ich Danke Dir