Как быстро создавать сводные таблицы в R

Как быстро создавать сводные таблицы в R

В Excel сводные таблицы предлагают простой способ группировки и суммирования данных.

Например, если у нас есть следующий набор данных в Excel, мы можем использовать сводную таблицу, чтобы быстро суммировать общие продажи по регионам:

Это говорит нам:

  • Общий объем продаж в регионе А составил 51.
  • Всего в регионе B было 85 продаж.
  • Всего в регионе C было 140 продаж.

Или мы могли бы обобщить по другому показателю, например, по среднему объему продаж по регионам:

Оказывается, мы можем быстро создавать аналогичные сводные таблицы в R, используя функции group_by() и summ( ) из пакета dplyr .

В этом руководстве приведены несколько примеров того, как это сделать.

Пример: создание сводных таблиц в R

Во-первых, давайте создадим тот же набор данных в R, который мы использовали в предыдущих примерах из Excel:

#create data frame
df <- data.frame(region=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
 device=c('X', 'X', 'Y', 'X', 'Y', 'Y', 'X', 'X', 'Y', 'Y'),
 sales=c(12, 18, 21, 22, 34, 29, 38, 36, 34, 32))

#view data frame
df

 region device sales
1 A X 12
2 A X 18
3 A Y 21
4 B X 22
5 B Y 34
6 B Y 29
7 C X 38
8 C X 36
9 C Y 34
10 C Y 32

Далее давайте загрузим пакет dplyr и воспользуемся функциями group_by() иsummary() для группировки по регионам и нахождения суммы продаж по регионам:

library(dplyr)

#find sum of sales by region
df %>%
 group_by(region) %>% 
 summarize(sum_sales = sum (sales))

# A tibble: 3 x 2
 region sum_sales

1 A 51
2 B 85
3 C 140

Мы видим, что эти числа совпадают с числами, показанными во вводном примере Excel.

Мы также можем рассчитать средние продажи по регионам:

#find average sales by region
df %>%
 group_by(region) %>% 
 summarize(mean_sales = mean (sales))

# A tibble: 3 x 2
 region mean_sales

1 A 17 
2 B 28.3
3 C 35 

Опять же, эти числа совпадают с числами, показанными в примере Excel ранее.

Обратите внимание, что мы также можем группировать по нескольким переменным. Например, мы можем найти сумму продаж, сгруппированных по регионам и типам устройств:

#find sum of sales by region and device type
df %>%
 group_by(region, device) %>% 
 summarize(sum_sales = sum (sales))

# A tibble: 6 x 3
# Groups: region [3]
 region device sum_sales

1 A X 30
2 A Y 21
3 B X 22
4 B Y 63
5 C X 74
6 C Y 66 

Дополнительные ресурсы

Как выполнить ВПР (аналогично Excel) в R
Полное руководство: как группировать и суммировать данные в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.