Как рассчитать совокупную сумму на группу в r
Вы можете использовать следующие методы для расчета совокупной суммы на группу в R:
Метод 1: используйте базу R
df$cum_sum <- ave(df$values_var, df$group_var, FUN=cumsum)
Способ 2: используйте dplyr
library (dplyr)
df %>% group_by(group_var) %>% mutate(cum_sum = cumsum(values_var))
Способ 3: использовать data.table
library (data.table)
setDT(df)[, cum_sum := cumsum(values_var), group_var]
В следующих примерах показано, как использовать каждый метод на практике со следующим фреймом данных в R:
#create data frame df <- data. frame (store=rep(c(' A ', ' B ', ' C '), each= 4 ), sales=c(3, 4, 4, 2, 5, 8, 9, 7, 6, 8, 3, 2)) #view data frame df blind sales 1 to 3 2 to 4 3 to 4 4 to 2 5 B 5 6 B 8 7 B 9 8 B 7 9 C 6 10 C 8 11 C 3 12 C 2
Пример 1: вычислите совокупную сумму на группу, используя базу R.
Следующий код показывает, как использовать функцию ave() базы данных R для расчета совокупной суммы продаж , сгруппированной по магазинам :
#add column to show cumulative sales by store df$cum_sales <- ave(df$sales, df$store, FUN=cumsum) #view updated data frame df store sales cum_sales 1 to 3 3 2 to 4 7 3 to 4 11 4 to 2 13 5 B 5 5 6 B 8 13 7 B 9 22 8 B 7 29 9 C 6 6 10 C 8 14 11 C 3 17 12 C 2 19
Новый столбец cum_sales отображает совокупную сумму продаж , сгруппированную по магазинам .
Пример 2. Рассчитайте совокупную сумму на группу с помощью dplyr.
Следующий код демонстрирует, как использовать различные функции из пакета dplyr в R для расчета совокупной суммы продаж , сгруппированной по магазинам :
library (dplyr) #add column to show cumulative sales by store df %>% group_by(store) %>% mutate(cum_sales = cumsum(sales)) #view updated data frame df # A tibble: 12 x 3 # Groups: store [3] store sales cum_sales 1 to 3 3 2 to 4 7 3 to 4 11 4 to 2 13 5 B 5 5 6 B 8 13 7 B 9 22 8 B 7 29 9 C 6 6 10 C 8 14 11 C 3 17 12 C 2 19
Новый столбец cum_sales отображает совокупную сумму продаж , сгруппированную по магазинам .
Пример 3. Вычисление совокупной суммы по группе с использованием data.table
Следующий код демонстрирует, как использовать различные функции из пакета data.table в R для расчета совокупной суммы продаж , сгруппированной по магазинам :
library (data.table) #add column to show cumulative sales by store setDT(df)[, cum_sales := cumsum(sales), store] #view updated data frame df store sales cum_sales 1: A 3 3 2: A 4 7 3: A 4 11 4: A 2 13 5: B 5 5 6: B 8 13 7: B 9 22 8: B 7 29 9: C 6 6 10: C 8 14 11: C 3 17 12: C 2 19
Новый столбец cum_sales отображает совокупную сумму продаж , сгруппированную по магазинам .
Примечание . Все три метода дают одинаковый результат. Однако методы dplyr и data.table будут работать быстрее при работе с чрезвычайно большими кадрами данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные вычисления в R:
Как рассчитать сумму по группе в R
Как рассчитать среднее значение на группу в R
Как рассчитать стандартное отклонение по группе в R