09 июня 2020

5 видеороликов о пакете dplyr языка R

Руководитель отдела аналитики в Netpeak. Автор курсов "Язык R для интернет маркетинга" и "Язык R для пользователей Excel". Автор R пакетов ryandexdirect, rfacebookstat, rvkstat и других. Автор телеграм и youtube канала R4marketing.
dplyr – популярный пакет для обработки данных в языке R. Небольшой плейлист из 10-15-минутных роликов познакомит с основным функциями пакета dplyr с учётом последних нововведений версии 1.0.0.
5 видеороликов о пакете dplyr языка R

Статья подготовлена читателем Библиотеки программиста – Алексеем Селезнёвым, руководителем отдела аналитики в Netpeak. Не стесняйтесь присылать материалы для публикации по кнопке + в верхней панели – тексты проходят редактуру, мы поможем сделать статью понятной для широкой аудитории.

Целевая аудитория
Целевая аудитория публикации – пользователи R, знакомые с основами языка. Если ваших знаний пока недостаточно, воспользуйтесь предыдущей статьёй автора о бесплатном видеокурсе по языку R, нашим руководством по изучению языка R или курсами из суперподборки (перечислены в разделе Data Science).
***

Установка dplyr 1.0.0

Перед началом работы необходимо обновить или установить пакет dplyr. Делается это стандартной командой install.packages('dplyr').

Обновлённая функция summarise()

Функция summarise() используется для агрегации данных. Ранее было необходимо прописать агрегирующие функции под каждый столбец либо использовать summarise_at(), summarise_if(), summarise_all(). В версии dplyr 1.0.0 функция summarise() была значительно доработана – теперь с её помощью можно получить фрейм произвольной размерности.

        library(dplyr)

# тестовые данные
df <- tibble(
  grp = rep(1:2, each = 5), 
  x = c(rnorm(5, -0.25, 1), rnorm(5, 0, 1.5)),
  y = c(rnorm(5, 0.25, 1), rnorm(5, 0, 0.5)),
)

# получим минимальные и максимальные значения для каждой группы
# и поместим эти значения в строки
df %>% 
  group_by(grp) %>% 
  summarise(rng = range(x))

    
Обзор обновлённой функции summarise()

Этот и следующие обзоры подготовлены по серии статей создателя пакета – Хэдли Викхэма. Например, данное видео снято по материалам публикации dplyr 1.0.0: new summarise() features

Функции select(), rename_with(), relocate()

Функция select() давно присутствует в пакете dplyr. Вместе с ней ранее использовались select_if() и select_at(). Теперь все три функции объединены внутри select(). Аналогичным образом rename_with() пришла на смену функциям rename(), rename_at() и rename_at(). Наконец, relocate() – это новая функция, позволяющая менять положение столбцов датафрейма:

        # тестовые данные
df2 <- tibble(x1 = 1, x2 = "a", x3 = 2, y1 = "b", y2 = 3, y3 = "c", y4 = 4)

# выбрать числовые столбцы
df2 %>% select(is.numeric)
# выбрать НЕ текстовые столбцы
df2 %>% select(!is.character)

# переименовываем столбцы
# функция rename_with
df2 %>% rename_with(toupper)

df2 %>% rename_with(toupper, starts_with("x"))

df2 %>% rename_with(toupper, is.numeric)

# relocate для изменения порядка стобцов
df3 <- tibble(w = 0, x = 1, y = "a", z = "b")
# переместить столбцы y, z в начало
df3 %>% relocate(y, z)
# переместить текстовые столбцы вначало
df3 %>% relocate(is.character)
    
Обзор функций select(), rename_with() и relocate() 

Источник: dplyr 1.0.0: select, rename, relocate.

Функция across()

Ещё одна новая функция – across() – позволяет применять какую-либо функцию одновременно к ряду столбцов датафрейма:

        library(dplyr)

# тестовый датафрейм
df <- tibble(g1 = as.factor(sample(letters[1:4],size = 10, replace = T )),
             g2 = as.factor(sample(LETTERS[1:3],size = 10, replace = T )),
             a  = runif(10, 1, 10),
             b  = runif(10, 10, 20),
             c  = runif(10, 15, 30),
             d  = runif(10, 1, 50))

# считаем среднее по столбцам от a до d
df %>% 
  group_by(g1, g2) %>% 
  summarise(across(a:d, mean))
    
Обзор функции across() 

Источник: dplyr 1.0.0: working across columns.

Перебор строк: функция rowwise()

Функция rowwise() – новая альтернатива циклам и функциям из пакета purrr. Функция используется для строчного перебора датафрейма:

        # тестовый дата фрейм 
df <- tibble( student_id = 1:4, test1 = 10:13, test2 = 20:23, test3 = 30:33, test4 = 40:43 ) 

# разбиваем по строкам
rf <- rowwise(df, student_id) 

# считаем среднюю оценку по каждому студентам
rf %>% mutate(avg = mean(c(test1, test2, test3, test4)))
    
Обзор функции rowwise()

Источник: dplyr 1.0.0: working within rows

Операции INSERT, UPDATE, DELETE

Перед самым релизом в dplyr 1.0.0 добавили семейство функций rows_*(), с помощью которых в R можно выполнять SQL-операции INSERT, UPDATE, DELETE.

Обзор функций dplyr для SQL-операций 
SQL
Если нужно познакомиться с SQL-операциями, воспользуйтесь нашим гайдом SQL за 20 минут. Если необходимо углубиться – у нас есть подборка материалов для изучения баз данных и SQL со ссылками на книги и видеокурсы.

Заключение

Номер версии 1.0.0 говорит, что синтаксис dplyr в дальнейшем не будет значительно меняться – даже если появятся новые функции и аргументы, написанный код будет иметь обратную совместимость.

Если представленные обзоры были полезны, можно подписаться на YouTube-канал автора или канал Telegram – основная часть контента посвящена урокам по языку R.

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ