В 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