Как рассчитать совокупную сумму с помощью dplyr


Вы можете использовать следующие методы для вычисления совокупной суммы столбца в R с помощью пакета dplyr :

Метод 1: вычислить совокупную сумму одного столбца

df %>% mutate(cum_sum = cumsum(var1))

Метод 2: вычислить совокупную сумму по группе

df %>% group_by(var1) %>% mutate(cum_sum = cumsum(var2))

В следующих примерах показано, как использовать каждый метод на практике.

Пример 1. Вычисление совокупной суммы с помощью dplyr

Предположим, у нас есть следующий фрейм данных в R:

#create dataset
df <- data.frame(day=c(1, 2, 3, 4, 5, 6, 7, 8),
 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view dataset
df

 day sales
1 1 7
2 2 12
3 3 10
4 4 9
5 5 9
6 6 11
7 7 18
8 8 23

Мы можем использовать следующий код для создания нового столбца, содержащего совокупную сумму значений в столбце «продажи»:

library(dplyr)

#calculate cumulative sum of sales
df %>% mutate(cum_sales = cumsum(sales))

 day sales cum_sales
1 1 7 7
2 2 12 19
3 3 10 29
4 4 9 38
5 5 9 47
6 6 11 58
7 7 18 76
8 8 23 99

Пример 2. Вычисление совокупной суммы по группам с использованием dplyr

Предположим, у нас есть следующий фрейм данных в R:

#create dataset
df <- data.frame(store=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
 day=c(1, 2, 3, 4, 1, 2, 3, 4),
 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view dataset
df

 store day sales
1 A 1 7
2 A 2 12
3 A 3 10
4 A 4 9
5 B 1 9
6 B 2 11
7 B 3 18
8 B 4 23

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

library(dplyr)

#calculate cumulative sum of sales by store
df %>% group_by(store) %>% mutate(cum_sales = cumsum(sales))

# A tibble: 8 x 4
# Groups: store [2]
 store day sales cum_sales 
1 A 1 7 7
2 A 2 12 19
3 A 3 10 29
4 A 4 9 38
5 B 1 9 9
6 B 2 11 20
7 B 3 18 38
8 B 4 23 61

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

В следующих руководствах объясняется, как выполнять другие распространенные вычисления в R:

Как рассчитать сумму по группе в R
Как рассчитать среднее значение по группе в R