22  Schritt 1: Daten importieren

Das Importieren von Daten unterscheidet sich nicht von den Methoden aus Kapitel 13. Tidyverse bringt mit readr() ein eigenes Paket zum Importieren mit, dies ist aber nur für Textdateien wirklich geeignet. Mit den Zusatzpaketen haven und readxl können Sie wie in Kapitel 13 beschrieben über die Funktionen read_sav(), read_xlsx() und read_csv() Ihre Daten einlesen.

In RStudio können Sie einfach im Datenfenster auf Import Dataset klicken, siehe Abschnitt Abschnitt 13.6.

22.1 gelabelte SPSS-Daten

Hier sei noch einmal erwähnt, dass in SPSS kategoriale Daten häufig mit Labels versehen werden.

# Lade Test-SPSS-Datei mit Labels 
spss <- haven::read_sav(url("https://www.produnis.de/R/alteDaten-lang.sav"))
head(spss)
## # A tibble: 6 × 6
##                   v1                 v2            v3       v4       v5 thetruth
##            <dbl+lbl>          <dbl+lbl>     <dbl+lbl> <dbl+lb> <dbl+lb> <dbl+lb>
## 1 4 [strongly agree] 4 [strongly agree] 4 [strongly … NA       NA       4 [stro…
## 2 4 [strongly agree] 4 [strongly agree] 4 [strongly … NA       NA       4 [stro…
## 3 4 [strongly agree] 4 [strongly agree] 4 [strongly … NA       NA       4 [stro…
## 4 4 [strongly agree] 3 [agree]          3 [agree]      4 [str…  4 [str… 4 [stro…
## 5 3 [agree]          3 [agree]          2 [disagree]   2 [dis…  4 [str… 4 [stro…
## 6 2 [disagree]       3 [agree]          3 [agree]      2 [dis…  4 [str… 4 [stro…

Mit head() sehen wir, dass die Werte der Spalten gelabelt sind (4=strongly agree, 3=agree, usw.). Die Labels stehen in eckigen Klammern neben dem eingentlichen Wert der Variable.

Mit glimpse() werden die Labels ignoriert

# glimpse() zeigt KEINE Labels 
glimpse(spss)
## Rows: 45,278
## Columns: 6
## $ v1       <dbl+lbl> 4, 4, 4, 4, 3, 2, 2, 2, 4, 3, 2, 3, 2, 2, 4, 4, 3, 2, 4, …
## $ v2       <dbl+lbl> 4, 4, 4, 3, 3, 3, 1, 3, 4, 3, 2, 2, 2, 2, 4, 3, 1, 2, 4, …
## $ v3       <dbl+lbl> 4, 4, 4, 3, 2, 3, 3, 3, 4, 3, 2, 2, 2, 3, 4, 2, 3, 3, 4, …
## $ v4       <dbl+lbl> NA, NA, NA,  4,  2,  2,  2,  3, NA,  4,  2,  4,  4,  2, N…
## $ v5       <dbl+lbl> NA, NA, NA,  4,  4,  4,  1,  3, NA,  4,  4,  1,  4,  4, N…
## $ thetruth <dbl+lbl>  4,  4,  4,  4,  4,  4,  4,  3,  1,  4,  4,  4,  3,  4, N…

In R ist die Verwendung von Wertelabels eher untypisch. Es empfiehlt sich, die Ausprägungsstufen so wie sie sind als Werte einzutragen, also z.B. direkt “männlich” - “weiblich” - “divers” anstatt 0 - 1 - 2 und anschließender Labelung. So werden die Ausprägungen auch auf den Grafiken entsprechend “aussagekräftig” angezeigt.

Wir wandeln alle Variablen in Faktoren um, welche die Labels als Levelnamen nutzen (die Funktion mutate() wird später genauer erläutert).

spss %>% 
  dplyr::mutate(as_factor(.))
## # A tibble: 45,278 × 6
##   v1             v2             v3             v4             v5        thetruth
##   <fct>          <fct>          <fct>          <fct>          <fct>     <fct>   
## 1 strongly agree strongly agree strongly agree <NA>           <NA>      strongl…
## 2 strongly agree strongly agree strongly agree <NA>           <NA>      strongl…
## 3 strongly agree strongly agree strongly agree <NA>           <NA>      strongl…
## 4 strongly agree agree          agree          strongly agree strongly… strongl…
## 5 agree          agree          disagree       disagree       strongly… strongl…
## 6 disagree       agree          agree          disagree       strongly… strongl…
## # … with 45,272 more rows

Wenn die Daten umfangreich gelabelt sind, kann es hilfreich sein, sich ein “Wörterbuch” der Labels anzulegen. Hierfür nutzt man die Funktion generate_dictionary() aus dem labelled-Paket.

dict <- labelled::generate_dictionary(spss)

Das Objekt dict ist ein Datenframe, in welchem die Labels der Variablen gespeichert sind. In RStudio kann man die Labels so im Datenviewer durchsuchen.

Abb. 22.1: Labelwörterbuch

Da wir die SPSS-Datei mit den Funktionen des haven-Pakets importiert haben, liegen gelabelte Werte und Variablen als Klasse haven_labelled vor. Diese Eigenschaft machen wir uns in den nächsten Code-Schnipseln zu Nutze.

Mit diesen Befehlen werden alle Werte der im Datensatz enthaltenen Variablen, die als haven_labelled klassifiziert ist, in einen Factor umgewandelt:

spssfct <- spss %>%
  mutate_if(haven::is.labelled, haven::as_factor)
glimpse(spssfct)
## Rows: 45,278
## Columns: 6
## $ v1       <fct> strongly agree, strongly agree, strongly agree, strongly agre…
## $ v2       <fct> strongly agree, strongly agree, strongly agree, agree, agree,…
## $ v3       <fct> strongly agree, strongly agree, strongly agree, agree, disagr…
## $ v4       <fct> NA, NA, NA, strongly agree, disagree, disagree, disagree, agr…
## $ v5       <fct> NA, NA, NA, strongly agree, strongly agree, strongly agree, s…
## $ thetruth <fct> strongly agree, strongly agree, strongly agree, strongly agre…

Und folgende Befehle wandeln Variablenlabels in Variablennamen um, hierzu muss das Paket sjlabelled installiert sein:

spssn <- spssfct %>%
  sjlabelled::label_to_colnames()
glimpse(spssn)
## Rows: 45,278
## Columns: 6
## $ `Blue Question`                                      <fct> strongly agree, s…
## $ `Red Question`                                       <fct> strongly agree, s…
## $ `Green Question`                                     <fct> strongly agree, s…
## $ `Yellow Question`                                    <fct> NA, NA, NA, stron…
## $ `Pink Question`                                      <fct> NA, NA, NA, stron…
## $ `Schalke steigt nächstes Jahr in die dritte Liga ab` <fct> strongly agree, s…