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
!