Diese Musterlösung wurde erstellt von Peter Hähner (Ruhr-Universität Bochum).

(c) Luhmann: R für Einsteiger, 5. Aufl., Beltz, 2020

Vorbereitungen

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)

Aufgabe 1

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

Aufgabe 2

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)

Aufgabe 3

Fügen Sie zwei neue Variablen zum Data Frame erstis hinzu:

  1. die standardisierten Werte der Variablen gewiss und
  2. die zentrierten Werte der Variablen gewiss.

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

Aufgabe 4

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.

Aufgabe 5

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

Aufgabe 6

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