如何计算r中每组的累积和


您可以使用以下方法来计算 R 中每组的累积和:

方法一:使用Base 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 基数计算每组的累积和

以下代码显示如何使用 R 数据库ave()函数计算按商店分组的sales累计总和:

 #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 计算每组的累积和

以下代码演示了如何使用 R 中 dplyr 包中的各种函数来计算按商店分组的销售额累计总和:

 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按组计算累计和

以下代码演示了如何使用 R 中 data.table 包中的各种函数来计算按商店分组的销售额累计总和:

 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中按组计算标准差

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注