如何找到R数据帧中因子水平的累积和?

累积总和主要用于数据的描述性分析,但有时我们可能需要在理解移动总和的时间序列分析时对其进行计算,但这非常少见。如果我们在R数据框中有一个因子列,那么一起找到所有因子水平的累加总和就没有意义,我们必须找到每个水平的累加总和。使用ave函数可以很容易地做到这一点。

示例

请看以下数据帧-

set.seed(15)
x1<-as.factor(sample(LETTERS[1:3],20,replace=TRUE))
x2<-rpois(20,5)
df1<-data.frame(x1,x2)
df1

输出结果

  x1 x2
1  A 5
2  C 6
3  B 2
4  B 3
5  A 8
6  B 5
7  A 5
8  A 3
9  C 5
10 A 2
11 C 5
12 B 6
13 A 2
14 A 5
15 A 4
16 C 6
17 B 8
18 A 5
19 B 8
20 B 3

查找x1的不同值的x2值的累积和-

示例

df1$CumSum_x2_based_on_x1<-ave(x2,x1,FUN=cumsum)
df1

输出结果

  x1 x2 CumSum_x2_based_on_x1
1  A 5    5
2  C 6    6
3  B 2    2
4  B 3    5
5  A 8    13
6  B 5    10
7  A 5    18
8  A 3    21
9  C 5    11
10 A 2    23
11 C 5    16
12 B 6    16
13 A 2    25
14 A 5    30
15 A 4    34
16 C 6    22
17 B 8    24
18 A 5    39
19 B 8    32
20 B 3    35

让我们看另一个例子-

示例

Group<-sample(c("GRP1","GRP2","GRP3","GRP4"),20,replace=TRUE)
Response<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Group,Response)
df2

输出结果

 Group Response
1  GRP2    1
2  GRP3    1
3  GRP2    8
4  GRP2    1
5  GRP2    4
6  GRP1    7
7  GRP1    8
8  GRP1    2
9  GRP1    1
10 GRP1    1
11 GRP4    3
12 GRP3    9
13 GRP4    4
14 GRP1    9
15 GRP4    5
16 GRP2    8
17 GRP2    10
18 GRP3    5
19 GRP3    8
20 GRP3    8

查找不同组值的响应值的累积和

示例

df2$CumSum_of_GroupLevels<-ave(Response,Group,FUN=cumsum)
df2

输出结果

  Group Response CumSum_of_GroupLevels
1  GRP2    1       1
2  GRP3    1       1
3  GRP2    8       9
4  GRP2    1       10
5  GRP2    4       14
6  GRP1    7       7
7  GRP1    8       15
8  GRP1    2       17
9  GRP1    1       18
10 GRP1    1       19
11 GRP4    3       3
12 GRP3    9       10
13 GRP4    4       7
14 GRP1    9       28
15 GRP4    5       12
16 GRP2    8       22
17 GRP2    10       32
18 GRP3    5       15
19 GRP3    8       23
20 GRP3    8       31