Как быстро создавать сводные таблицы в 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