Comment calculer la somme cumulée par groupe dans R
Vous pouvez utiliser les méthodes suivantes pour calculer une somme cumulée par groupe dans R :
Méthode 1 : utiliser Base R
df$cum_sum <- ave(df$values_var, df$group_var, FUN=cumsum)
Méthode 2 : utiliser dplyr
library(dplyr)
df %>% group_by(group_var) %>% mutate(cum_sum = cumsum(values_var))
Méthode 3 : utiliser data.table
library(data.table)
setDT(df)[, cum_sum := cumsum(values_var), group_var]
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant dans 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 store sales 1 A 3 2 A 4 3 A 4 4 A 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
Exemple 1 : calculer la somme cumulée par groupe en utilisant la base R
Le code suivant montre comment utiliser la fonction ave() de la base R pour calculer la somme cumulée des ventes , regroupées par magasin :
#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 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
La nouvelle colonne appelée cum_sales affiche la somme cumulée des ventes , regroupées par magasin .
Exemple 2 : calculer la somme cumulée par groupe à l’aide de dplyr
Le code suivant montre comment utiliser diverses fonctions du package dplyr dans R pour calculer la somme cumulée des ventes , regroupées par magasin :
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 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
La nouvelle colonne appelée cum_sales affiche la somme cumulée des ventes , regroupées par magasin .
Exemple 3 : Calculer la somme cumulée par groupe à l’aide de data.table
Le code suivant montre comment utiliser diverses fonctions du package data.table dans R pour calculer la somme cumulée des ventes , regroupées par magasin :
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
La nouvelle colonne appelée cum_sales affiche la somme cumulée des ventes , regroupées par magasin .
Remarque : Les trois méthodes produisent le même résultat. Cependant, les méthodes dplyr et data.table auront tendance à être plus rapides lorsque vous travaillez avec des trames de données extrêmement volumineuses.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres calculs courants dans R :
Comment calculer la somme par groupe dans R
Comment calculer la moyenne par groupe dans R
Comment calculer l’écart type par groupe dans R