merge(df1,df2,...) verbindet zwei data.frames, wie ein join in SQL. Ist kein weiterer Parameter angegeben, ist es ein inner join, mit all.x, all.y oder all=TRUE wird daraus ein left, right oder full join. Mit dem Parameter by wird angegeben, welche Spalten als ID für gleiche Einträge genommen werden. Ist by nicht angegeben, werden alle gleichnamigen Spalten verwendet.

Wer mehr über JOINs wissen will, schaut mal im Wikipedia-Eintrag rein.

Beispiel-Code

# Beispieldatensatz iris mit 150 Zeilen, ergänzt um ID-Spalte
df1 <- data.frame(ID=1:nrow(iris),iris,stringsAsFactors = FALSE)
# Ergänzung von zwei zufälligen Features für die ersten 100 IDs aus df
# und 20 zusätzliche, die nicht in df vorkommen
df2 <- data.frame(ID=c(1:100,151:170),feature1=rnorm(120),feature2=rbinom(120,1,0.3))
 
#inner join: nur gemeinsame IDs
#also 100 Zeilen
ij <- merge(df1,df2,by="ID")
 
#left join: alle IDs aus linkem Datensatz, rechten Datensatz mit NA ergänzt
#also 150 Zeilen
lj <- merge(df1,df2,by="ID",all.x=TRUE)
 
#right join: alle IDs aus rechtem Datensatz, linken Datensatz mit NA ergänzt
#also 120 Zeilen
rj <- merge(df1,df2,by="ID",all.y=TRUE)
 
#full join: alle IDs aus beiden Datensätzen, nicht passende mit NAs ergänzt
#also 170 Zeilen
fj <- merge(df1,df2,by="ID",all=TRUE)

Siehe auch

inner_join, left_join, right_join, full_join aus dem Package dplyr