Übung

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:


Übung 1: Erste Schritte

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.

exclamation 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?

Lösung

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?

Tipp Standardmäßig sind Variablen die Spalten und Beobachtungen die Zeilen eines Datensatzes.

Lösung

Wir finden die Information im R Studio Feld Environment

… oder indem wir folgende Funktionen nutzen:

ncol(data) # Variablen = Anzahl der Spalten
[1] 70
nrow(data) # Beobachtungen (Personen; N) = Anzahl der Zeilen
[1] 296


3.) Liegen alle Variablen in einem ihrem Messniveau angemessenen Datentyp vor?

Tipp Im Codebuch finden wir Informationen zu den Variablen. Über die Funktionen str() bekommen wir Informationen zum Datentyp.

Lösung
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.

# nominalskaliert (unsortierter Faktor):
data$male <- factor(data$male)
str(data$male)
 Factor w/ 2 levels "0","1": 1 2 1 1 1 1 2 2 1 1 ...
exclamation
Nicht verwirren lassen: Der Faktor male hat die Kodierungen 0 und 1 (wie schon die integer-Variable vorher), aber die interne Kodierung des Faktors ist 1 und 2.
# ordinalskaliert (sortierter Faktor):
data$inc <- factor(data$inc, ordered=TRUE)
str(data$inc)
 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"