Data Joining

Oftmals liegen Rohdaten in unterschiedlichen files vor. Diese kommen etwa aus verschiedenen Erhebungswellen oder verschiedenen Erhebungsmethoden (z.B. Survey & Logdata). Meistens liegen dabei nicht alle Merkmalsträger in allen Teildatensätzen vor (z.B. aufgrund von Panelmortalität).

In {dplyr} sind die join-Funktionen für das Zusammenführen von Datensätzen geeignet:

Join-Typ Beschreibung
full_join() Behält alle Zeilen aus beiden Tabellen
left_join() Behält alle Zeilen aus der linken Tabelle und ergänzt passende Werte aus der rechten Tabelle
right_join() Behält alle Zeilen aus der rechten Tabelle und ergänzt passende Werte aus der linken Tabelle
inner_join() Behält nur die Zeilen mit passenden Werten in beiden Tabellen

Beispiel 1 (full_join())

Als erstes wollen wir wie in folgender Abbildung dargestellt einen full_join() durchfĂĽhren:

ID Species D15N
N100A2 Chinstrap 9.39305
N2A2 Adelie NA


ID Species bill_length_mm
N1A1 Adelie 39.1
N100A2 Chinstrap 50.2


ID Species D15N bill_length_mm
N100A2 Chinstrap 9.39305 50.2
N2A2 Adelie NA NA
N1A1 Adelie NA 39.1

Beide Tabellen enthalten Daten von insgesamt 3 Individuen, jeweils ein unterschiedliches Individuum fehlt in einer Tabelle. full_join() erhält alle individuen in der gejointen Tabelle und füllt fehlende Werte mit NA auf.

Beispiel 2 (left_join())

ID Species D15N
N100A2 Chinstrap 9.39305
N2A2 Adelie NA


ID Species bill_length_mm
N1A1 Adelie 39.1
N100A2 Chinstrap 50.2


ID Species D15N bill_length_mm
N100A2 Chinstrap 9.39305 50.2
N2A2 Adelie NA NA

Nutzt man left_join(tabelle_1, tabelle_2) bleiben nur die Individuen aus tabelle_1 erhalten. Zusätzliche Variablen von tabelle_2 werden jedoch aufgefüllt.

Beispiel 3 (right_join())

ID Species D15N
N100A2 Chinstrap 9.39305
N2A2 Adelie NA


ID Species bill_length_mm
N1A1 Adelie 39.1
N100A2 Chinstrap 50.2


ID Species D15N bill_length_mm
N100A2 Chinstrap 9.39305 50.2
N1A1 Adelie NA 39.1

Nutzt man right_join(tabelle_1, tabelle_2) bleiben nur die Individuen aus tabelle_2 erhalten. Zusätzliche Variablen von tabelle_1 werden jedoch aufgefüllt.

Ăśbung 1

Im Folgenden Codefenster sind die beiden Minimaldatensätze data_A und data_B als Objekte hinterlegt:

data_A <- tibble(ID = c("A", "B"),
                 Var_1 = c(4, 8))
data_B <- tibble(ID = c("A", "C"),
                 Var_2 = c(3, 7))
data_A
# A tibble: 2 Ă— 2
  ID    Var_1
  <chr> <dbl>
1 A         4
2 B         8
data_B
# A tibble: 2 Ă— 2
  ID    Var_2
  <chr> <dbl>
1 A         3
2 C         7

Sagen Sie voraus, welche Ergebnisse

  • full_join(data_A, data_B)
  • left_join(data_A, data_B)
  • right_join(data_A, data_B)
  • inner_join(data_A, data_B)

zeigen werden.