Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 1 z 27/10 w kursie~12 min
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.

Code
# 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 -.

Code
# 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.

Code
# 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().

Code
# 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

Ćwiczenie#r.m4.l1.e1
Próby: 0Ładowanie...

Dla danej ramki danych df, wybierz kolumny name i age za pomocą funkcji select() i zapisz wynik w df_selected.

Ładowanie edytora...
Pokaż wskazówkę

Użyj: df_selected <- select(df, name, age)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m4.l1.e2
Próby: 0Ładowanie...

Przefiltruj wiersze ramki danych df, w których kolumna age jest ściśle większa niż 18, zapisując wynik w df_adults.

Ładowanie edytora...
Pokaż wskazówkę

Użyj funkcji filter(df, age > 18) i przypisz wynik do df_adults.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m4.l1.e3
Próby: 0Ładowanie...

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.

Ładowanie edytora...
Pokaż wskazówkę

Napisz: res <- df %>% filter(age > 18) %>% select(name)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m4.l1.e4
Próby: 0Ładowanie...

Posortuj wiersze ramki danych df według kolumny salary w kolejności malejącej za pomocą arrange() i desc(). Zapisz w df_sorted.

Ładowanie edytora...
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

Ćwiczenie#r.m4.l1.e5
Próby: 0Ładowanie...

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.

Ładowanie edytora...
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