[Courtesy of pxhere](https://pxhere.com/en/photo/1457161) Courtesy of pxhere

Funktionen und Loops - Übungen

Vorbereitung

Bitte laden Sie für die folgenden Aufgaben die Übungsdatensatze mdbf und fb24:

# Übungsdatensatz für Aufgabe 3
load(url("https://pandar.netlify.app/daten/mdbf.rda"))
# Übungsdatensatz für Aufgabe 4
load(url("https://pandar.netlify.app/daten/fb24.rda"))

Aufgabe 1

Eigene Funktionen helfen, Arbeitsschritte effizient zusammenzufassen.

  • Schreiben Sie eine eigene Funktion namens quadriere, die eine Zahl entgegennimmt und deren Quadrat zurückgibt.
  • Testen Sie die Funktion mit den Werten 3 und 7.

Aufgabe 2

Mit if-Abfragen kann die Ausführung von Code gesteuert werden.

  • Schreiben Sie eine Funktion alterstest, die ein Alter als Eingabe erhält und zurückgibt:
    • „Volljährig“, wenn das Alter mindestens 18 ist,
    • „Minderjährig“, wenn das Alter darunter liegt.
  • Testen Sie Ihre Funktion mit den Werten 16 und 22.

Aufgabe 3

Ziel dieser Aufgabe ist es, alle negativ gepolten Items im mdbf-Datensatz in eine positive Richtung umzucodieren. Folgende Items sind negativ gepoolt: "stim3", "stim4", "stim5", "stim7", "stim9", "stim11"

  • Erstellen Sie zunächst eine Kopie des Datensatzes mdbf (z. B. mdbf_r).
  • Speichern Sie alle negativ gepolten Variablen in einem Vektor neg.
  • Rekodieren Sie die Items mit einem for-Loop, indem Sie die Werte wie folgt umdrehen: -1 * (x - 5)
  • Überprüfen Sie den Erfolg der Rekodierung durch die Berechnung der Korrelation vor und nach der Umkodierung für stim3.
    • Hinweis: Die Korrelation sollte -1 betragen

Aufgabe 4

Im zugehörigen Kapitel haben wir die Funktion var_eigen zur Ausgabe der Varianz und Stichprobengröße erstellt:

var_eigen <- function(x, empirical = TRUE){
  n <- length(x)
  x_quer <- mean(x)
  if (empirical == TRUE) {
    var <- sum((x - x_quer)^2) / n
  } else {
    var <- sum((x - x_quer)^2) / (n - 1)
  }
  return(list(Varianz = var, Stichprobengroesse = n))
}

Nach Anwendung der Funktion auf alle numerischen Variablen im Datensatz fb24, haben wir festgestellt, dass die Berechnung für einige der Variablen fehltschlägt, da diese NAs beinhalten. Folgende for-Schleife haben wir dazu genutzt:

for (i in names(fb24)) {
  print(i)
  if (is.character(fb24[, i])) {
    print("Eine character Variable.")
  } else {
    print(var_eigen(x = fb24[, i], empirical = TRUE))
  }
}

Erweitern Sie nun die Funktion var_eigen um ein logisches Argument na.rm. Wird na.rm = TRUE gesetzt, sollen fehlende Werte aus der Berechnung ausgeschlossen werden.

  • Achten Sie darauf, dass die Berechnung von n auf der bereinigten Stichprobe basiert.
  • Testen Sie die neue Funktion sowohl mit als auch ohne na.rm = TRUE.
  • Wenden Sie sie anschließend mit na.rm = TRUE auf alle numerischen Variablen in fb24 an.