Datensätze zusammenführen (neue Variablen)

Will man nur weitere Variablen in einen Datensatz hinzufügen, kann man auch hierfür full_join() nutzen. Wir haben zum Beispiel in einem weiteren Datensatz aus Panem, der einen neu eingeführten Social Score pro Person beinhaltet. Diese Daten wollen wir nun dem Datensatz PSS hinzufügen. Diese haben wir im Datensatz sp getrennt gespeichert und dort wird dieselbe ID-Variable genutzt, die auf die ID-Variable des Datensatzes pss matcht. Wir fügen jetzt die Socialpoints dem Datensatz pss mit full_join() hinzu. Schauen wir uns zuerst nochmal die zwei Datensätze an:

head(sp)
##   socialpoints    id
## 1     88.00907 10000
## 2     90.38817 10001
## 3     88.43383 10002
## 4     92.27890 10003
## 5     93.31521 10004
## 6     89.57225 10005
head(pss)
##    idno   district   gndr agea         edu wkhtot     income stfdem stfeco
## 1 10000 Distrikt 1   male   41 ES-ISCED IV     34 7th decile      7      6
## 2 10001 Distrikt 1   male   65 ES-ISCED II     20 6th decile      8      7
## 3 10002 Distrikt 1   male   48 ES-ISCED IV     27 7th decile      6      6
## 4 10003 Distrikt 1 female   49  ES-ISCED V     30 6th decile      5      4
## 5 10004 Distrikt 1 female   48 ES-ISCED IV     29 5th decile      4      5
## 6 10005 Distrikt 1 female   64  ES-ISCED V     30 6th decile      6      6
##   trstprl trstprt trstplt trstlgl lrscale
## 1       3       5       4       6       4
## 2       5       5       5       4       3
## 3       4       4       6       5       6
## 4       2       7       4       3       6
## 5       6       6       6       6       2
## 6       1       3       2       4       7

Wir haben zwar in beiden Variablen eine ID-Variable, allerdings ist die Spalte unterschiedlich benannt. Wir können jetzt - wie zuvor oben - wieder im by-Argument dies angeben. Diesmal wollen wir einfach schnell vorher den Spaltennamen in einem der Datensätze anpassen. Dazu nutzen wir einfach rename(). Die Logik in der Funktion ist neuer Name = alter Name.

sp <- sp %>% 
  rename(idno = id)

head(sp)
##   socialpoints  idno
## 1     88.00907 10000
## 2     90.38817 10001
## 3     88.43383 10002
## 4     92.27890 10003
## 5     93.31521 10004
## 6     89.57225 10005

Jetzt sind die Spaltennamen gleich und wir können die Datensätze mergen.

pss <- pss %>% 
  full_join(
    sp, 
    by = "idno"
  )

head(pss)
##    idno   district   gndr agea         edu wkhtot     income stfdem stfeco
## 1 10000 Distrikt 1   male   41 ES-ISCED IV     34 7th decile      7      6
## 2 10001 Distrikt 1   male   65 ES-ISCED II     20 6th decile      8      7
## 3 10002 Distrikt 1   male   48 ES-ISCED IV     27 7th decile      6      6
## 4 10003 Distrikt 1 female   49  ES-ISCED V     30 6th decile      5      4
## 5 10004 Distrikt 1 female   48 ES-ISCED IV     29 5th decile      4      5
## 6 10005 Distrikt 1 female   64  ES-ISCED V     30 6th decile      6      6
##   trstprl trstprt trstplt trstlgl lrscale socialpoints
## 1       3       5       4       6       4     88.00907
## 2       5       5       5       4       3     90.38817
## 3       4       4       6       5       6     88.43383
## 4       2       7       4       3       6     92.27890
## 5       6       6       6       6       2     93.31521
## 6       1       3       2       4       7     89.57225

Und auch das hast du gemeistert! Jetzt geht’s rüber ins nächste Paket des tidyverse: tidyr!