Datenvorbereitung
Letzte Änderung am 24. Februar 2021
Im Folgenden wollen wir einige Aufgaben bearbeiten, die in den Bereich der Datenvorbereitung fallen. Dazu gehören u.a. das Extrahieren und Sortieren von Daten, die Änderung der Kodierung von Daten sowie das Erstellen von Summary-Variablen. Zuallererst sollten wir uns jedoch immer mit dem genutzten Datensatz vertraut machen.
Dazu nutzen wir einen Datensatz, der im Rahmen eines Projektes zur Untersuchung des Zusammenhangs des Bedürfnisses nach Privatsphäre und verschiedenen Persönlichkeitseigenschaften erhoben wurde. Mehr Informationen zum Projekt und zur Publikation finden wir hier.
Den Datensatz sowie das dazugehörige Codebuch finden wir im Open Science Framework. Mehr Informationen zu OSF, der Replikationskrise und der Open Science Bewegung finden wir hier.
Den Datensatz können wir, nachdem wir ihn heruntergeladen haben, folgendermaßen in R einlesen:
data <- read.csv("Dateipfad/data.csv") # hier den eigenen Dateipfad einfügen
So sollte der Datensatz aussehen:
Zuallererst wollen wir uns mit dem Datensatz vertraut machen. Dazu benötigen wir das Codebuch, welches uns Informationen über die erhobenen Variablen sowie deren Messung gibt. Am besten überfliegen wir das Codebuch und den Datensatz einmal, um uns damit vertraut zu machen, bevor wir die nachfolgenden Aufgaben bearbeiten.
Es sind nicht alle Variablen, die im Codebuch auftauchen, auch im Datensatz.
1.) Es gibt zwei Variablen im Datensatz, die nicht im Codebuch zu finden sind. Welche sind das?
Die Variable sex
taucht nicht im Datensatz auf. Nur die Variable male
, welche die Ausprägungen 0
und 1
besitzt. Schätzungsweise soll mit beiden dieselbe Information koderit werden: das biologische Geschlecht der befragten Personen.
Die Variable time
taucht nicht im Codebuch auf. Möglicherweise ist das die individuelle Bearbeitungszeit für den Fragebogen in Sekunden. Vor der Nutzung der der Variablen time
müssten wir deren Bedeutung klären.
2.) Wie viele Variablen und Beobachtungen enthält der Datensatz?
3.) Liegen alle Variablen in einem ihrem Messniveau angemessenen Datentyp vor?
str()
bekommen wir Informationen zum Datentyp.
str(data)
'data.frame': 296 obs. of 70 variables:
$ id : int 1 2 3 4 5 6 7 8 9 10 ...
$ male : int 0 1 0 0 0 0 1 1 0 0 ...
$ age : int 19 19 20 19 22 20 20 18 19 19 ...
$ inc : int 2 3 1 2 3 2 1 1 1 3 ...
$ time : int 2456 1414 828 1043 1806 1133 1625 2319 7129 1343 ...
$ pri_nee_gen_1: int 6 7 5 6 4 5 6 5 4 4 ...
$ pri_nee_gen_2: int 6 2 5 3 5 4 6 6 3 4 ...
$ pri_nee_gen_3: int 6 6 4 6 7 6 5 7 4 6 ...
$ pri_nee_gen_4: int 7 7 5 6 7 6 7 7 6 6 ...
$ pri_nee_soc_1: int 2 4 5 2 5 4 5 4 1 6 ...
$ pri_nee_soc_2: int 4 5 4 2 5 4 6 4 2 6 ...
$ pri_nee_soc_3: int 3 6 4 3 5 3 4 6 2 6 ...
$ pri_nee_soc_4: int 1 6 4 2 4 2 5 4 2 4 ...
$ pri_nee_soc_5: int 1 4 4 5 4 2 6 6 3 6 ...
$ pri_nee_soc_6: int 1 3 5 5 2 4 4 4 2 2 ...
$ pri_nee_soc_7: int 1 1 3 3 1 2 2 6 1 2 ...
$ pri_nee_soc_8: int 1 7 4 2 2 2 2 6 3 2 ...
$ pri_nee_soc_9: int 1 3 4 2 6 5 6 7 1 6 ...
$ pri_nee_int_1: int 1 1 4 4 2 4 2 5 2 5 ...
$ pri_nee_int_2: int 1 6 5 5 1 2 5 5 1 3 ...
$ pri_nee_int_3: int 7 7 5 5 6 2 4 3 3 6 ...
$ pri_nee_int_4: int 3 6 2 7 5 5 4 4 4 6 ...
$ pri_nee_int_5: int 5 6 4 7 2 5 2 3 6 6 ...
$ pri_nee_int_6: int 3 6 3 5 2 3 3 2 3 3 ...
$ pri_nee_int_7: int 7 7 5 6 2 5 6 6 6 4 ...
$ pri_nee_int_8: int 1 7 4 5 5 3 5 5 6 3 ...
$ pri_nee_int_9: int 4 7 3 3 5 5 5 5 4 3 ...
$ soc_1 : int 5 5 3 2 2 3 2 5 3 2 ...
$ soc_2 : int 4 4 6 6 6 6 5 2 6 6 ...
$ soc_3 : int 4 4 2 3 2 2 5 6 4 6 ...
$ soc_4 : int 4 6 4 7 6 6 3 5 3 4 ...
$ soc_5 : int 7 5 2 6 4 2 2 4 2 3 ...
$ soc_6 : int 4 5 6 5 2 6 2 4 3 4 ...
$ soc_7 : int 3 2 2 2 2 2 2 5 3 2 ...
$ soc_8 : int 3 4 6 6 5 4 2 2 7 5 ...
$ itg_1 : int 1 1 2 3 2 3 1 4 3 1 ...
$ itg_2 : int 2 1 4 4 4 6 2 4 1 1 ...
$ itg_3 : int 5 7 4 5 4 5 4 4 7 1 ...
$ itg_4 : int 2 7 6 2 6 6 7 4 3 7 ...
$ itg_5 : int 1 1 2 1 2 2 1 4 1 1 ...
$ itg_6 : int 4 1 2 3 2 2 4 4 2 1 ...
$ itg_7 : int 1 6 2 2 3 2 1 4 6 1 ...
$ itg_8 : int 5 2 4 5 4 4 6 4 3 1 ...
$ itg_9 : int 5 1 1 2 6 5 2 4 7 2 ...
$ itg_10 : int 5 2 2 7 6 5 7 4 7 6 ...
$ itg_11 : int 4 4 4 5 5 5 6 4 4 1 ...
$ anx_1 : int 1 1 3 5 5 2 6 5 3 6 ...
$ anx_2 : int 5 4 3 1 5 6 3 3 5 5 ...
$ anx_3 : int 1 1 5 3 3 2 6 3 2 6 ...
$ anx_4 : int 4 3 3 3 3 3 5 1 7 2 ...
$ anx_5 : int 6 6 2 5 5 3 6 3 1 2 ...
$ anx_6 : int 6 7 3 3 5 6 2 5 6 3 ...
$ anx_7 : int 3 6 5 6 4 2 2 1 2 5 ...
$ anx_8 : int 6 4 4 3 5 7 4 6 7 2 ...
$ ria_1 : int 1 7 5 5 6 3 4 3 7 6 ...
$ ria_2 : int 5 7 5 4 4 6 6 5 6 6 ...
$ ria_3 : int 1 6 5 6 6 3 3 5 5 3 ...
$ ria_4 : int 6 3 3 4 5 5 3 4 6 6 ...
$ ria_5 : int 4 2 5 6 4 2 6 6 5 5 ...
$ ria_6 : int 5 6 3 3 5 6 2 3 4 5 ...
$ ria_7 : int 5 7 5 4 5 5 1 7 5 6 ...
$ ria_8 : int 6 7 5 5 5 6 6 5 4 6 ...
$ tra_1 : int 5 7 3 3 2 5 3 4 4 5 ...
$ tra_2 : int 6 2 6 6 6 4 6 4 7 5 ...
$ tra_3 : int 5 7 4 3 5 5 5 4 5 5 ...
$ tra_4 : int 7 6 5 7 4 5 6 4 5 2 ...
$ tra_5 : int 5 7 4 3 5 5 2 4 4 6 ...
$ tra_6 : int 7 1 4 6 6 5 6 4 6 2 ...
$ tra_7 : int 4 7 4 3 5 4 2 4 2 6 ...
$ tra_8 : int 3 7 4 3 4 5 5 4 5 6 ...
Alle Variablen liegen als integer vor. Für die Fragebogenitems (pri_nee_
, soc_
, itg_
, anx_
, ria_
und tra_
), die intervallskaliert sein sollen, ist das korrekt. Die soziodemographischen Variablen male
und inc
hingegen sind nominal- bzw. ordinalskaliert. Das bedeutet, dass sie noch faktorisiert werden müssen, um in R als solche erkannt zu werden.
Factor w/ 2 levels "0","1": 1 2 1 1 1 1 2 2 1 1 ...
male
hat die Kodierungen 0
und 1
(wie schon die integer-Variable vorher), aber die interne Kodierung des Faktors ist 1
und 2
.
Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 3 1 2 3 2 1 1 1 3 ...
levels(data$inc)
[1] "1" "2" "3" "4" "5"