Lekcje modułu (1/2)
Filtrowanie i Wybór Danych
Tidyverse to kolekcja pakietów języka R zaprojektowanych do analizy danych (data science), które dzielą tę samą filozofię projektowania i struktury danych. Główny pakiet do manipulacji danymi w tym zestawie nazywa się dplyr.
dplyr wprowadza zestaw funkcji („czasowników”), które sprawiają, że manipulowanie ramkami danych (Data Frames) staje się intuicyjne.
Operator Pipe (%>% lub |>)
Filozofia Tidyverse opiera się na łączeniu operacji. Operator pipe %>% (lub natywny operator |> wprowadzony w R 4.1+) pobiera wynik jednego wyrażenia i przekazuje go jako pierwszy argument do następnej funkcji. Pozwala to uniknąć ciągłego zagnieżdżania funkcji lub tworzenia zbyt wielu zmiennych tymczasowych.
# Bez pipe:
filter(select(df, name, age), age > 20)
# Z pipe:
df %>%
select(name, age) %>%
filter(age > 20)
Czasowniki dplyr do Filtrowania i Wyboru
Trzy podstawowe czasowniki służące do wyodrębniania informacji z ramki danych to:
1. select()
Wybiera określone kolumny z ramki danych. Możesz wylistować nazwy kolumn, które chcesz zachować, lub wykluczyć je za pomocą znaku -.
# Wybiera kolumny 'name' i 'salary'
select(df, name, salary)
# Usuwa kolumnę 'address'
select(df, -address)
2. filter()
Filtruje wiersze na podstawie jednego lub więcej warunków logicznych.
# Filtruje wiersze, w których age jest większe niż 30
filter(df, age > 30)
# Filtruje z wieloma warunkami (logiczne AND)
filter(df, age > 30, department == "HR")
3. arrange()
Sortuje wiersze na podstawie wartości jednej lub więcej kolumn. Domyślnie sortowanie jest rosnące. Aby sortować malejąco, używa się desc().
# Sortuje według age (rosnąco)
arrange(df, age)
# Sortuje według salary (malejąco)
arrange(df, desc(salary))
Spróbuj sam
Esercizio 1: Wybór kolumn
Dla danej ramki danych df, wybierz kolumny name i age za pomocą funkcji select() i zapisz wynik w df_selected.
Pokaż wskazówkę
Użyj: df_selected <- select(df, name, age)
Rozwiązanie dostępne po 3 próbach
Przefiltruj wiersze ramki danych df, w których kolumna age jest ściśle większa niż 18, zapisując wynik w df_adults.
Pokaż wskazówkę
Użyj funkcji filter(df, age > 18) i przypisz wynik do df_adults.
Rozwiązanie dostępne po 3 próbach
Użyj operatora pipe %>% do połączenia operacji: najpierw wybierz kolumnę name z ramki danych df, a następnie przefiltruj, pozostawiając tylko rekordy z age > 18. Zapisz w res.
Pokaż wskazówkę
Napisz: res <- df %>% filter(age > 18) %>% select(name)
Rozwiązanie dostępne po 3 próbach
Posortuj wiersze ramki danych df według kolumny salary w kolejności malejącej za pomocą arrange() i desc(). Zapisz w df_sorted.
Pokaż wskazówkę
Użyj arrange(desc(salary)) wewnątrz potoku (pipeline) lub jako bezpośredni argument.
Rozwiązanie dostępne po 3 próbach
Napisz kompletny potok (pipeline) na df: przefiltruj rekordy z department równym 'IT', wybierz kolumny name i salary oraz posortuj wynik według salary (rosnąco). Zapisz ostateczny wynik w res.
Pokaż wskazówkę
Użyj pipe %>% do połączenia filter(department == 'IT'), select(name, salary) i arrange(salary).
Rozwiązanie dostępne po 3 próbach