Diese Musterlösung wurde erstellt von Peter Hähner (Ruhr-Universität Bochum).
(c) Luhmann: R für Einsteiger, 5. Aufl., Beltz, 2020
Setzen Sie ein Arbeitsverzeichnis oder legen Sie ein entsprechendes R-Projekt an (Kap. 23).
Laden Sie dann die Datei erstis.RData.
load("erstis.RData")
Laden Sie die benötigten Pakete (ggf. müssen Sie diese vorab noch installieren).
library(tidyverse)
Die Daten enthalten drei Variablen, die die Zufriedenheit der Studierenden mit ihrem Studium erfassen: Zufriedenheit mit den Studieninhalten (zuf.inh.1), den Studienbedingungen (zuf.bed.1) und den Belastungen durch das Studium (zuf.bel.1). Berechnen Sie für alle Personen die individuellen Mittelwerte (d. h. die Skalenwerte) über diese drei Variablen hinweg und fügen Sie diese als neue Variable zum Data Frame hinzu. Den Namen der neuen Variablen können Sie frei wählen.
Lösung mit R-Basisfunktionen:
erstis$zuf.mean <- rowMeans(data.frame(erstis$zuf.inh.1, erstis$zuf.bed.1, erstis$zuf.bel.1))
head(erstis$zuf.mean)
## [1] 2.111111 3.111111 3.666667 2.555556 NA 3.000000
Lösung mit tidyverse:
erstis <- erstis %>%
mutate(zuf.mean = (zuf.inh.1 + zuf.bed.1 + zuf.bel.1)/3)
head(erstis$zuf.mean)
## [1] 2.111111 3.111111 3.666667 2.555556 NA 3.000000
Die Variablen stim1 bis stim12 enthalten die Antworten auf zwölf Items, mit denen die Stimmung der Studierenden gemessen werden soll. Alle Items wurden auf einer Skala von 1 bis 5 beantwortet. Die Items stim1, stim2, stim6, stim8, stim10 und stim12 waren positiv formuliert (z.B. “gut”), d. h. bei diesen Items kennzeichnen hohe Werte eine gute Stimmung. Die Items stim3, stim4, stim5, stim7, stim9 und stim11 waren dagegen negativ formuliert (z.B. “schlecht”), d. h. bei diesen Items kennzeichnen hohe Werte eine schlechte Stimmung. Polen Sie die negativ formulierten Items um und fügen Sie die umgepolten Werte als neue Variable zum Data Frame erstis hinzu.
Lösung mit R-Basisfunktionen:
erstis$stim3.r <- 6 - erstis$stim3
erstis$stim4.r <- 6 - erstis$stim4
erstis$stim5.r <- 6 - erstis$stim5
erstis$stim7.r <- 6 - erstis$stim7
erstis$stim9.r <- 6 - erstis$stim9
erstis$stim11.r <- 6 - erstis$stim11
Lösung mit tidyverse:
erstis <- erstis %>% mutate(
stim3.r = 6 - stim3,
stim4.r = 6 - stim4,
stim5.r = 6 - stim5,
stim7.r = 6 - stim7,
stim9.r = 6 - stim9,
stim11.r = 6 - stim11)
Fügen Sie zwei neue Variablen zum Data Frame erstis hinzu:
gewiss undgewiss.Lösung mit R-Basisfunktionen:
# Standardisieren
erstis$gewiss.z <- scale(erstis$gewiss)
head(erstis$gewiss.z)
## [,1]
## [1,] -0.1467657
## [2,] 0.4949077
## [3,] -1.1092758
## [4,] -0.7884391
## [5,] 1.1365810
## [6,] 0.4949077
# Zentrieren
erstis$gewiss.cen <- scale(erstis$gewiss, scale = FALSE)
head(erstis$gewiss.cen)
## [,1]
## [1,] -0.1143617
## [2,] 0.3856383
## [3,] -0.8643617
## [4,] -0.6143617
## [5,] 0.8856383
## [6,] 0.3856383
Lösung mit tidyverse:
# Standardisieren und zentrieren
erstis <- erstis %>% mutate (
gewiss.z = scale(gewiss),
gewiss.cen = scale(gewiss, scale = FALSE))
head(erstis$gewiss.z)
## [,1]
## [1,] -0.1467657
## [2,] 0.4949077
## [3,] -1.1092758
## [4,] -0.7884391
## [5,] 1.1365810
## [6,] 0.4949077
head(erstis$gewiss.cen)
## [,1]
## [1,] -0.1143617
## [2,] 0.3856383
## [3,] -0.8643617
## [4,] -0.6143617
## [5,] 0.8856383
## [6,] 0.3856383
Sortieren Sie die Ausgabe nach der Variablen Prokrastination (prok). Wie lautet die ID (Variable code) der Person mit dem niedrigsten Prokrastinationswert?
Lösung mit R-Basisfunktionen:
erstis <- erstis[order(erstis$prok), ]
erstis$code[1]
## [1] 161
Lösung mit tidyverse:
erstis <- erstis %>% arrange(prok)
erstis$code[1]
## [1] 161
Die Person mit dem kleinsten Prokrastinationswert hat die ID 161.
Erstellen Sie einen neuen Data Frame, der nur Personen mit einem Prokrastinationswert (prok) von 2.5 oder kleiner enthält.
Lösung mit R-Basisfunktionen:
auswahl <- subset(erstis, prok <= 2.5)
nrow(auswahl)
## [1] 98
Lösung mit tidyverse:
auswahl <- erstis %>%
filter(prok <= 2.5)
nrow(auswahl)
## [1] 98
Erstellen Sie einen neuen Data Frame, der nur die Variablen lz13 bis lz17 enthält und nur Personen mit gültigen Werten auf diesen Variablen.
Lösung mit R-Basisfunktionen:
auswahl.2 <- na.omit(data.frame(lz13 = erstis$lz13,
lz14 = erstis$lz14,
lz15 = erstis$lz15,
lz16 = erstis$lz16,
lz17 = erstis$lz17))
# Neuen Datensatz anzeigen lassen
head(auswahl.2)
## lz13 lz14 lz15 lz16 lz17
## 1 4 5 5 5 3
## 2 6 5 6 6 4
## 3 6 7 7 7 7
## 4 6 5 7 6 6
## 5 7 7 7 6 7
## 6 3 2 4 6 3
nrow(auswahl.2)
## [1] 188
Lösung mit tidyverse:
auswahl.2 <- erstis %>%
select( lz13, lz14, lz15, lz16, lz17) %>%
drop_na()
# Neuen Datensatz anzeigen lassen
head(auswahl.2)
## lz13 lz14 lz15 lz16 lz17
## 1 4 5 5 5 3
## 2 6 5 6 6 4
## 3 6 7 7 7 7
## 4 6 5 7 6 6
## 5 7 7 7 6 7
## 6 3 2 4 6 3
nrow(auswahl.2)
## [1] 188