Lektionen des Moduls (2/2)
Exploration und Aggregation
R wurde in erster Linie als statistische Umgebung entwickelt. Dementsprechend bietet es zahlreiche native Funktionen zur Analyse, Zusammenfassung und zum Verständnis der Verteilung von Daten in Vektoren oder Tabellen.
Statistische Basisfunktionen
R ermöglicht es, die wichtigsten Lage- und Streuungsmaße auf numerischen Vektoren sehr einfach zu berechnen:
mean(x): Berechnet das arithmetische Mittel der Elemente.median(x): Berechnet den Median (den Zentralwert).sd(x): Berechnet die Standardabweichung (Maß für die Streuung der Daten).min(x)undmax(x): Geben den Minimal- bzw. Maximalwert zurück.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mittelwert:", avg, "- Std. Abw.:", round(dispersion, 2), "\n")
Umgang mit fehlenden Werten (NA)
In der Realität enthalten Datensätze oft fehlende Werte, die in R durch den speziellen Wert NA (Not Available) dargestellt werden.
Wenn Sie versuchen, den Mittelwert oder ein anderes Aggregat auf einem Vektor zu berechnen, der auch nur ein einzelnes NA enthält, gibt R NA als Ergebnis zurück. Um fehlende Werte zu ignorieren, müssen Sie das logische Argument na.rm = TRUE (NA remove) übergeben:
temperatures <- c(18, 21, NA, 24, 19)
# Dies gibt NA zurück
print(mean(temperatures))
# Dies ignoriert das NA und berechnet den Wert für die gültigen Elemente
print(mean(temperatures, na.rm = TRUE))
Globale Zusammenfassung mit summary()
Die Funktion summary() ist ein leistungsstarkes Werkzeug, das einen vollständigen statistischen Überblick über einen Vektor oder einen ganzen Data Frame bietet und Minimum, 1. Quartil, Median, Mittelwert, 3. Quartil und Maximum anzeigt:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))
Datenaggregation mit aggregate
Beim Arbeiten mit Data Frames möchte man häufig zusammenfassende Statistiken (wie Mittelwert oder Summe) für Gruppen oder Kategorien berechnen. Die Funktion aggregate() in R vereinfacht diesen Prozess:
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Berechnet das durchschnittliche Gehalt pro Abteilung
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)
Die Syntax salary ~ department bedeutet: „Analysiere die Variable salary basierend auf der Variable department“. Das Argument FUN = mean gibt an, dass wir das arithmetische Mittel für jede Gruppe berechnen möchten.
Erweitertes Filtern mit subset
Die Funktion subset() bietet eine intuitive und elegante Möglichkeit, Teilmengen von Zeilen und Spalten aus einem Data Frame zu extrahieren, ohne komplexe eckige Klammern verwenden zu müssen:
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtert nur aktive Mitarbeiter, die älter als 28 Jahre sind
active_employees <- subset(employees, active == TRUE & age > 28)
Probier es aus
Berechne für den gegebenen Vektor temperatures das arithmetische Mittel und speichere es in der Variable mean_temp. Berechne dann den Median und speichere ihn in median_temp.
Hinweis anzeigen
Verwende mean_temp <- mean(temperatures) und median_temp <- median(temperatures)
Lösung nach 3 Versuchen verfügbar
Berechne für den gegebenen Vektor scores, der einen NA-Wert enthält, die Standardabweichung unter Ausschluss fehlender Werte und speichere sie in der Variable sd_scores.
Hinweis anzeigen
Verwende die Funktion sd() mit dem Argument na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
Lösung nach 3 Versuchen verfügbar
Erstelle für den gegebenen Data Frame df eine statistische Zusammenfassung (summary) der Spalte values und speichere sie in der Variable stats_summary.
Hinweis anzeigen
Extrahiere die Spalte mit dem Operator $ und übergib sie an summary(): stats_summary <- summary(df$values)
Lösung nach 3 Versuchen verfügbar
Verwende für den gegebenen Data Frame sales die Funktion aggregate(), um die Summe (FUN = sum) der Spalte revenue gruppiert nach der Spalte region zu berechnen. Speichere das Ergebnis in der Variable region_sales.
Hinweis anzeigen
Verwende: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)
Lösung nach 3 Versuchen verfügbar
Verwende für den gegebenen Data Frame products die Funktion subset(), um nur die Produkte zu filtern, die zur Kategorie 'Electronics' (category == 'Electronics') gehören und einen Preis über 100 (price > 100) haben. Speichere das Ergebnis in der Variable expensive_electronics.
Hinweis anzeigen
Verwende: expensive_electronics <- subset(products, category == 'Electronics' & price > 100)
Lösung nach 3 Versuchen verfügbar