如何在 R 資料框中建立累積和列?


累積和用於確定變數或組的總和,並幫助我們瞭解該變數或組的值隨時間的變化。在建立累積和時,必須確保總和與最後一個值的累積和(取決於求和方向)相同。我們可以使用 dplyr 包的 mutate 函式來查詢累積和併為其建立一個列。

示例

考慮以下資料框:

x1 <-1:20
grp <-rep(LETTERS[1:4],each=5)
df <-data.frame(x1,grp)
df

輸出

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

根據組別 grp 建立一個包含 x1 值累積和的 cumusum 列:

示例

df%>%group_by(grp)%>%mutate(cumusum=cumsum(x1))
# A tibble: 20 x 3
# Groups: grp [4]
x1 grp cumusum

輸出

<int> <fct> <int>
1 1 A 1
2 2 A 3
3 3 A 6
4 4 A 10
5 5 A 15
6 6 B 6
7 7 B 13
8 8 B 21
9 9 B 30
10 10 B 40
11 11 C 11
12 12 C 23
13 13 C 36
14 14 C 50
15 15 C 65
16 16 D 16
17 17 D 33
18 18 D 51
19 19 D 70
20 20 D 90

讓我們再看另一個例子:

示例

set.seed(1)
Class <-rep(c("C1","C2","C3","C4","C5"),each=4)
Frequency <-sample(1:100,20)
data <-data.frame(Class,Frequency)
data

輸出

Class Frequency
1 C1 68
2 C1 39
3 C1 1
4 C1 34
5 C2 87
6 C2 43
7 C2 14
8 C2 82
9 C3 59
10 C3 51
11 C3 85
12 C3 21
13 C4 54
14 C4 74
15 C4 7
16 C4 73
17 C5 79
18 C5 37
19 C5 83
20 C5 97

根據類別 Class 建立一個包含頻率 Frequency 值累積和的 cumusum 列:

示例

data%>%group_by(Class)%>%mutate(cumusum=cumsum(Frequency))
# A tibble: 20 x 3
# Groups: Class [5]
Class Frequency cumusum

輸出

<fct> <int> <int>
1 C1 68 68
2 C1 39 107
3 C1 1 108
4 C1 34 142
5 C2 87 87
6 C2 43 130
7 C2 14 144
8 C2 82 226
9 C3 59 59
10 C3 51 110
11 C3 85 195
12 C3 21 216
13 C4 54 54
14 C4 74 128
15 C4 7 135
16 C4 73 208
17 C5 79 79
18 C5 37 116
19 C5 83 199
20 C5 97 296

更新於: 2020-08-24

500 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.