Урок 6 Пакет dplyr: Группировка и агрегация данных, group_by, summarise
6.1 Описание
В этом видео мы разберём одну из основных операций анализа данных, группировку и агрегацию. В ходе урока мы будем использовать пакет dplyr из библиотеки tidyverse и функции group_by() и summarise().
Мы рассмотрим всё семейство функций summarise(), т.е. summarise(), summarise_if() и summarise_at().
Список основных агрегирующих функций: sum - суммирование mean - среднее арифметическое min - минимальное max - максимальное median - медиана length - количество
6.3 Материалы
Все материалы к данному уроку можно найти по ссылке.
6.4 Код
# подключение пакетов
library(vroom)
library(dplyr)
# загрузка данных
ga_data <- vroom("https://raw.githubusercontent.com/selesnow/publications/master/code_example/from_excel_to_r/lesson_3/ga_nowember.csv")
# сгруппировать данные по дням
ga_data %>%
  group_by(date) %>%
  summarise(sessions = sum(sessions),
            bounces  = sum(bounces))
# другой вариант
ga_data %>%
  group_by(date) %>%
  summarise_at(c("sessions", "bounces"), 
               sum)
# группировка по двум полям
ga_data %>%
  group_by(date, medium) %>%
  summarise_at(c("sessions", "bounces"), 
               sum)
ga_data %>%
  group_by(date, medium) %>%
  summarise(ses = sum(sessions),
            bounc = sum(bounces))
# сумма по всем числовым столбцам
ga_data %>%
  group_by(medium) %>%
  summarise_if(is.numeric, mean)
# среднесуточное количество сеансов по каналам
ndays <- unique( ga_data$date ) %>% length
ga_data %>%
  group_by(medium) %>%
  summarise(daily_sessions = sum(sessions) / ndays)
# применяем сразу несколько агрегирующий функций
# сумма по всем числовым столбцам
result <-
ga_data %>%
  group_by(medium) %>%
  summarise_if(is.numeric, 
               list( avg   = mean,
                     med   = median,
                     sum   = sum,
                     count = length,
                     min   = min,
                     max   = max))