🏆 151 курс за 1 подписку: хватит выбирать — бери все и сразу!

Один клик — 151 возможность. Подпишись на OTUS сейчас!
Техномир мчится вперед, а вместе с ними растут и требования к специалистам. OTUS придумал крутую штуку — подписку на 151 курс по всем ключевым направлениям IT!
-
Почему подписка OTUS меняет правила игры:
- Доступ к 151 курсу от практикующих экспертов
- В 3 раза выгоднее, чем покупать каждый курс отдельно
- До 3 курсов одновременно без дополнительных затрат
- Свобода выбора направления — меняй треки когда угодно
Изучай новое, развивайся в своем темпе, меняй направления — подпишись на OTUS и прокачивай скилы по полной!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576. Erid 2VtzqupFnNL
Статья подготовлена читателем Библиотеки программиста – Алексеем Селезнёвым, руководителем отдела аналитики в Netpeak. Не стесняйтесь присылать материалы для публикации по кнопке +
в верхней панели – тексты проходят редактуру, мы поможем сделать статью понятной для широкой аудитории.
Установка 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
.
Заключение
Номер версии 1.0.0 говорит, что синтаксис dplyr в дальнейшем не будет значительно меняться – даже если появятся новые функции и аргументы, написанный код будет иметь обратную совместимость.
Если представленные обзоры были полезны, можно подписаться на YouTube-канал автора или канал Telegram – основная часть контента посвящена урокам по языку R.
Комментарии