Перейти до основного вмісту
Модуль 4 · Урок 1 із 27/10 у курсі~12 min
Модульні уроки (1/2)

Фільтрування та відбір даних

Tidyverse — це набір пакетів R, розроблених для науки про дані, які поділяють спільну філософію, граматику та структури даних. Основний пакет для обробки даних у цьому пакеті називається dplyr.

dplyr представляє набір функцій ("дієслів"), які роблять маніпуляцію кадрами даних дуже інтуїтивно зрозумілою.


Оператор труби (%>% або |>)

Філософія Tidyverse зосереджена на об’єднанні операцій. Оператор каналу %>% (або власний канал |>, представлений у R 4.1+) приймає результат одного виразу та передає його як перший аргумент до наступної функції. Це дозволяє уникнути викликів вкладених функцій і перешкоджає захаращенню робочого простору тимчасовими змінними.

R
# Without pipe:
filter(select(df, name, age), age > 20)

# With pipe:
df %>%
  select(name, age) %>%
  filter(age > 20)

dplyr Дієслова для фільтрації та вибору

Три основні дієслова для вилучення даних із кадру даних:

1. select()

Вибирає певні стовпці з кадру даних. Ви можете вказати назви стовпців, які потрібно зберегти, або використати префікс -, щоб виключити стовпці.

R
# Select the 'name' and 'salary' columns
select(df, name, salary)

# Remove the 'address' column
select(df, -address)

2. filter()

Фільтрує рядки на основі однієї або кількох логічних умов.

R
# Filter rows where age is greater than 30
filter(df, age > 30)

# Filter using multiple conditions (logical AND)
filter(df, age > 30, department == "HR")

3. arrange()

Сортує рядки на основі значень одного або кількох стовпців. За замовчуванням порядок сортування є зростаючим. Щоб відсортувати в порядку спадання, загорніть назву стовпця в desc().

R
# Sort by age (ascending)
arrange(df, age)

# Sort by salary (descending)
arrange(df, desc(salary))

Спробуйте самі

Вправа 1: Виберіть стовпці

вправи#r.m4.l1.e1
Спроби: 0Завантаження…

Враховуючи кадр даних df, виберіть стовпці імені та віку за допомогою select() і збережіть результат у df_selected.

Завантаження редактора…
Показати підказку

США: df_selected <- select(df, name, age)

Рішення доступне після 3 спроб

вправи#r.m4.l1.e2
Спроби: 0Завантаження…

Відфільтруйте рядки кадру даних df, де віковий стовпець строго перевищує 18, зберігаючи результат у df_adults.

Завантаження редактора…
Показати підказку

Скористайтеся функцією filter(df, age > 18) і призначте результат df_adults.

Рішення доступне після 3 спроб

вправи#r.m4.l1.e3
Спроби: 0Завантаження…

Використовуйте оператор каналу %>% для ланцюжка операцій: спочатку відфільтруйте df, зберігаючи лише записи, у яких вік > 18, а потім виберіть стовпець імені. Збережіть результат у рез.

Завантаження редактора…
Показати підказку

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

Рішення доступне після 3 спроб

вправи#r.m4.l1.e4
Спроби: 0Завантаження…

Відсортуйте рядки кадру даних df на основі стовпця зарплати в порядку спадання за допомогою arrange() і desc(). Збережіть результат у df_sorted.

Завантаження редактора…
Показати підказку

Usa arrange(desc(salary)) all'interno di una pipeline or come argomento diretto.

Рішення доступне після 3 спроб

вправи#r.m4.l1.e5
Спроби: 0Завантаження…

Напишіть повний конвеєр у df: відфільтруйте записи, де відділ дорівнює «ІТ», виберіть стовпці «Назва» та «Заробітна плата» та відсортуйте результат за зарплатою (за зростанням). Збережіть остаточний результат у рез.

Завантаження редактора…
Показати підказку

Використовуйте канал %>% для ланцюжкового фільтра (відділ == 'ІТ'), виберіть (ім'я, зарплата) і впорядкуйте (зарплата).

Рішення доступне після 3 спроб