Lektionen des Moduls (1/2)
Daten filtern und auswählen
Das Tidyverse ist eine Sammlung von R-Paketen für die Datenwissenschaft, die dieselbe Designphilosophie und Datenstruktur teilen. Das Hauptpaket für die Datenmanipulation in dieser Suite heißt dplyr.
dplyr führt eine Reihe von Funktionen („Verben“) ein, die die Manipulation von Data Frames intuitiv machen.
Der Pipe-Operator (%>% oder |>)
Die Philosophie des Tidyverse basiert auf der Verkettung von Operationen. Der Pipe-Operator %>% (oder der in R 4.1+ eingeführte native Operator |>) nimmt das Ergebnis eines Ausdrucks und übergibt es als erstes Argument an die nächste Funktion. Dies vermeidet die ständige Schachtelung von Funktionen oder das Erstellen zu vieler temporärer Variablen.
# Ohne Pipe:
filter(select(df, name, age), age > 20)
# Mit Pipe:
df %>%
select(name, age) %>%
filter(age > 20)
dplyr-Verben zum Filtern und Auswählen
Die drei grundlegenden Verben zum Extrahieren von Informationen aus einem Data Frame sind:
1. select()
Wählt bestimmte Spalten des Data Frames aus. Sie können die Namen der Spalten auflisten, die Sie behalten möchten, oder sie mit dem Minuszeichen - ausschließen.
# Wählt die Spalten 'name' und 'salary' aus
select(df, name, salary)
# Spalte 'address' entfernen
select(df, -address)
2. filter()
Filtert Zeilen basierend auf einer oder mehreren logischen Bedingungen.
# Filtert Zeilen, in denen age größer als 30 ist
filter(df, age > 30)
# Filtert mit mehreren Bedingungen (logisches UND)
filter(df, age > 30, department == "HR")
3. arrange()
Sortiert die Zeilen basierend auf den Werten einer oder mehrerer Spalten. Standardmäßig wird aufsteigend sortiert. Für eine absteigende Sortierung wird desc() verwendet.
# Sortiert nach age (aufsteigend)
arrange(df, age)
# Sortiert nach salary (absteigend)
arrange(df, desc(salary))
Probier es aus
Esercizio 1: Spalten auswählen
Wähle für den gegebenen Data Frame df die Spalten name und age mit der Funktion select() aus und speichere das Ergebnis in df_selected.
Hinweis anzeigen
Verwende: df_selected <- select(df, name, age)
Lösung nach 3 Versuchen verfügbar
Filtere die Zeilen des Data Frames df, in denen die Spalte age strikt größer als 18 ist, und speichere das Ergebnis in df_adults.
Hinweis anzeigen
Verwende die Funktion filter(df, age > 18) und weise das Ergebnis df_adults zu.
Lösung nach 3 Versuchen verfügbar
Verwende den Pipe-Operator %>%, um die Operationen zu verketten: Wähle zuerst die Spalte name aus dem Data Frame df aus und filtere dann, sodass nur Datensätze mit age > 18 erhalten bleiben. Speichere das Ergebnis in res.
Hinweis anzeigen
Schreibe: res <- df %>% filter(age > 18) %>% select(name)
Lösung nach 3 Versuchen verfügbar
Sortiere die Zeilen des Data Frames df nach der Spalte salary in absteigender Reihenfolge mit arrange() und desc(). Speichere das Ergebnis in df_sorted.
Hinweis anzeigen
Verwende arrange(desc(salary)) innerhalb einer Pipeline oder als direktes Argument.
Lösung nach 3 Versuchen verfügbar
Schreibe eine vollständige Pipeline für df: Filtere die Datensätze, bei denen department gleich 'IT' ist, wähle die Spalten name und salary aus und sortiere das Ergebnis nach salary (aufsteigende Reihenfolge). Speichere das Endergebnis in res.
Hinweis anzeigen
Verwende die Pipe %>%, um filter(department == 'IT'), select(name, salary) und arrange(salary) zu verketten.
Lösung nach 3 Versuchen verfügbar