Перейти к основному содержимому
Модуль 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, имя, возраст)

Решение доступно после 3 попыток

Упражнение#r.m4.l1.e2
Попыток: 0Загрузка…

Отфильтруйте строки фрейма данных df, где столбец возраста строго больше 18, сохранив результат в df_adults.

Загрузка редактора…
Показать подсказку

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

Решение доступно после 3 попыток

Упражнение#r.m4.l1.e3
Попыток: 0Загрузка…

Используйте оператор канала %>% для объединения операций: сначала отфильтруйте df, сохраняя только записи с возрастом > 18, а затем выберите столбец имени. Сохраните результат в res.

Загрузка редактора…
Показать подсказку

Scrivi: res <- df %>% filter(возраст > 18) %>% select(имя)

Решение доступно после 3 попыток

Упражнение#r.m4.l1.e4
Попыток: 0Загрузка…

Отсортируйте строки фрейма данных df на основе столбца зарплаты в порядке убывания, используя Arrange() и desc(). Сохраните результат в df_sorted.

Загрузка редактора…
Показать подсказку

США организуют (дескас (зарплата)) все внутренние трубопроводы или прямые аргументы.

Решение доступно после 3 попыток

Упражнение#r.m4.l1.e5
Попыток: 0Загрузка…

Напишите полный конвейер на df: отфильтруйте записи, где отдел равен «ИТ», выберите имя столбца и зарплату и отсортируйте результат по зарплате (по возрастанию). Сохраните окончательный результат в res.

Загрузка редактора…
Показать подсказку

Используйте канал %>% для создания цепочки filter(отдел == 'ИТ'), select(имя, зарплата) и Arrange(зарплата).

Решение доступно после 3 попыток