selesnow 09 июня 2020

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

dplyr – популярный пакет для обработки данных в языке R. Небольшой плейлист из 10-15-минутных роликов познакомит с основным функциями пакета dplyr с учётом последних нововведений версии 1.0.0.
0
2440

Статья подготовлена читателем Библиотеки программиста – Алексеем Селезнёвым, руководителем отдела аналитики в 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))

    

Этот и следующие обзоры подготовлены по серии статей создателя пакета – Хэдли Викхэма. Например, данное видео снято по материалам публикации 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)
    

Источник: 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))
    

Источник: 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)))
    

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

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

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

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

Заключение

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

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

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

Комментарии 0

ВАКАНСИИ

Java back-end developer
от 1500 USD до 2500 USD
IOS developer
Москва, от 150000 RUB до 220000 RUB
Разработчик Java (микросервисы)
по итогам собеседования

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

BUG