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


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

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

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

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

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

Оказывается, мы можем быстро создавать подобные сводные таблицы в R, используя функции group_by() и summary() из пакета 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
1AX 12
2AX18
3 AY 21
4 BX22
5 BY 34
6 BY 29
7 CX 38
8CX36
9 CY 34
10 CY 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 to 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 to 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
          
1AX30
2 AY 21
3 BX22
4 BY 63
5 CX 74
6 CY 66

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *