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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *