Hoe de cumulatieve som per groep in r te berekenen


Je kunt de volgende methoden gebruiken om een cumulatief bedrag per groep in R te berekenen:

Methode 1: Gebruik Base R

 df$cum_sum <- ave(df$values_var, df$group_var, FUN=cumsum)

Methode 2: gebruik dplyr

 library (dplyr)

df %>% group_by(group_var) %>% mutate(cum_sum = cumsum(values_var))

Methode 3: Gebruik data.table

 library (data.table)

setDT(df)[, cum_sum := cumsum(values_var), group_var] 

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met het volgende dataframe in 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

Voorbeeld 1: bereken de cumulatieve som per groep met behulp van de R-basis

De volgende code laat zien hoe u de functie ave() van de R-database gebruikt om de cumulatieve som van sales te berekenen, gegroepeerd per winkel :

 #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

De nieuwe kolom genaamd cum_sales geeft de cumulatieve som van de verkopen weer, gegroepeerd per winkel .

Voorbeeld 2: Bereken de cumulatieve som per groep met behulp van dplyr

De volgende code laat zien hoe u verschillende functies uit het dplyr-pakket in R kunt gebruiken om de cumulatieve som van sales te berekenen, gegroepeerd per winkel :

 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

De nieuwe kolom genaamd cum_sales geeft de cumulatieve som van de verkopen weer, gegroepeerd per winkel .

Voorbeeld 3: Bereken de cumulatieve som per groep met behulp van data.table

De volgende code laat zien hoe u verschillende functies uit het pakket data.table in R kunt gebruiken om de cumulatieve som van sales te berekenen, gegroepeerd per winkel :

 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

De nieuwe kolom genaamd cum_sales geeft de cumulatieve som van de verkopen weer, gegroepeerd per winkel .

Opmerking : alle drie de methoden leveren hetzelfde resultaat op. De methoden dplyr en data.table zullen echter doorgaans sneller zijn bij het werken met extreem grote dataframes.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende berekeningen in R kunt uitvoeren:

Hoe de som per groep in R te berekenen
Hoe het gemiddelde per groep in R te berekenen
Hoe de standaardafwijking per groep in R te berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert