Уроки модуля (1/2)
Фильтрация и выбор данных
Tidyverse — это набор пакетов R, предназначенных для науки о данных, которые имеют общую философию, грамматику и структуры данных. Основной пакет для манипулирования данными в этом пакете называется dplyr.
dplyr представляет набор функций («глаголов»), которые делают манипулирование фреймами данных интуитивно понятным.
Оператор трубопровода (%>% или |>)
Философия Tidyverse сосредоточена на объединении операций. Оператор канала %>% (или собственный канал |>, представленный в R 4.1+) принимает результат одного выражения и передает его в качестве первого аргумента следующей функции. Это позволяет избежать вызовов вложенных функций и не загромождает ваше рабочее пространство временными переменными.
# Without pipe:
filter(select(df, name, age), age > 20)
# With pipe:
df %>%
select(name, age) %>%
filter(age > 20)dplyr Глаголы для фильтрации и выбора
Три основных глагола для извлечения данных из фрейма данных:
1. select()
Выбирает определенные столбцы из фрейма данных. Вы можете перечислить имена столбцов, которые нужно сохранить, или использовать префикс - для исключения столбцов.
# Select the 'name' and 'salary' columns
select(df, name, salary)
# Remove the 'address' column
select(df, -address)2. filter()
Фильтрует строки на основе одного или нескольких логических условий.
# 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().
# Sort by age (ascending)
arrange(df, age)
# Sort by salary (descending)
arrange(df, desc(salary))Попробуйте сами
Упражнение 1. Выбор столбцов
Учитывая фрейм данных df, выберите столбцы имени и возраста с помощью select() и сохраните результат в df_selected.
Показать подсказку
США: df_selected <- select(df, имя, возраст)
Решение доступно после 3 попыток
Отфильтруйте строки фрейма данных df, где столбец возраста строго больше 18, сохранив результат в df_adults.
Показать подсказку
Используйте функцию filter(df, age > 18) и присвойте результат df_adults.
Решение доступно после 3 попыток
Используйте оператор канала %>% для объединения операций: сначала отфильтруйте df, сохраняя только записи с возрастом > 18, а затем выберите столбец имени. Сохраните результат в res.
Показать подсказку
Scrivi: res <- df %>% filter(возраст > 18) %>% select(имя)
Решение доступно после 3 попыток
Отсортируйте строки фрейма данных df на основе столбца зарплаты в порядке убывания, используя Arrange() и desc(). Сохраните результат в df_sorted.
Показать подсказку
США организуют (дескас (зарплата)) все внутренние трубопроводы или прямые аргументы.
Решение доступно после 3 попыток
Напишите полный конвейер на df: отфильтруйте записи, где отдел равен «ИТ», выберите имя столбца и зарплату и отсортируйте результат по зарплате (по возрастанию). Сохраните окончательный результат в res.
Показать подсказку
Используйте канал %>% для создания цепочки filter(отдел == 'ИТ'), select(имя, зарплата) и Arrange(зарплата).
Решение доступно после 3 попыток