# Lade Test-SPSS-Datei mit Labels
<- haven::read_sav(url("https://www.produnis.de/R/data/alteDaten-lang.sav"))
spss head(spss)
25 Schritt 1: Daten importieren
Das Importieren von Daten unterscheidet sich nicht von den Methoden aus Kapitel 14. 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 14 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 14.6.
25.1 gelabelte SPSS-Daten
Hier sei noch einmal erwähnt, dass in SPSS
kategoriale Daten häufig mit Labels versehen werden.
## # A tibble: 6 × 4
## Frage_1 Frage_2 Frage_3 Frage_4
## <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl>
## 1 4 [stimme zu] 4 [stimme zu] 4 [stimme zu] 0 [nicht vorhanden]
## 2 4 [stimme zu] 4 [stimme zu] 4 [stimme zu] 0 [nicht vorhanden]
## 3 4 [stimme zu] 4 [stimme zu] 4 [stimme zu] 0 [nicht vorhanden]
## 4 4 [stimme zu] 3 [weiß nicht] 3 [weiß nicht] 4 [stimme zu]
## 5 3 [weiß nicht] 3 [weiß nicht] 2 [stimme nicht zu] 2 [stimme nicht zu]
## 6 2 [stimme nicht zu] 3 [weiß nicht] 3 [weiß nicht] 2 [stimme nicht zu]
Mit head()
sehen wir, dass die Werte der Spalten gelabelt sind (4=stimme nicht zu, 3=weiß nicht, 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: 1,000
## Columns: 4
## $ Frage_1 <dbl+lbl> 4, 4, 4, 4, 3, 2, 2, 2, 4, 3, 2, 5, 2, 2, 4, 5, 5, 0, 4, 1…
## $ Frage_2 <dbl+lbl> 4, 4, 4, 3, 3, 3, 1, 5, 4, 3, 2, 2, 2, 2, 4, 5, 1, 2, 4, 2…
## $ Frage_3 <dbl+lbl> 4, 4, 4, 3, 2, 3, 3, 3, 4, 3, 2, 2, 2, 3, 4, 2, 3, 3, 4, 4…
## $ Frage_4 <dbl+lbl> 0, 0, 0, 4, 2, 2, 2, 3, 5, 4, 2, 4, 4, 2, 0, 4, 4, 2, 5, 2…
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 ::mutate(as_factor(.)) dplyr
## # A tibble: 1,000 × 4
## Frage_1 Frage_2 Frage_3 Frage_4
## <fct> <fct> <fct> <fct>
## 1 stimme zu stimme zu stimme zu nicht vorhanden
## 2 stimme zu stimme zu stimme zu nicht vorhanden
## 3 stimme zu stimme zu stimme zu nicht vorhanden
## 4 stimme zu weiß nicht weiß nicht stimme zu
## 5 weiß nicht weiß nicht stimme nicht zu stimme nicht zu
## 6 stimme nicht zu weiß nicht weiß nicht stimme nicht zu
## # ℹ 994 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.
<- labelled::generate_dictionary(spss) dict
Das Objekt dict
ist ein Datenframe, in welchem die Labels der Variablen gespeichert sind. In RStudio kann man die Labels so im Datenviewer durchsuchen.
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:
<- spss %>%
spssfct mutate_if(haven::is.labelled, haven::as_factor)
glimpse(spssfct)
## Rows: 1,000
## Columns: 4
## $ Frage_1 <fct> stimme zu, stimme zu, stimme zu, stimme zu, weiß nicht, stimme…
## $ Frage_2 <fct> stimme zu, stimme zu, stimme zu, weiß nicht, weiß nicht, weiß …
## $ Frage_3 <fct> stimme zu, stimme zu, stimme zu, weiß nicht, stimme nicht zu, …
## $ Frage_4 <fct> nicht vorhanden, nicht vorhanden, nicht vorhanden, stimme zu, …
Und folgende Befehle wandeln Variablenlabels in Variablennamen um, hierzu muss das Paket sjlabelled
installiert sein:
<- spssfct %>%
spssn ::label_to_colnames()
sjlabelledglimpse(spssn)
## Rows: 1,000
## Columns: 4
## $ `Statistik ist mein Lieblingsfach?` <fct> stimme zu, stim…
## $ `Das Statistikprogramm R gefällt mir besser als SPSS?` <fct> stimme zu, stim…
## $ `Ich hätte gerne mehr Übungen in Statistik?` <fct> stimme zu, stim…
## $ `Schalke ist mein Lieblingsverein?` <fct> nicht vorhanden…