如何在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
查詢不同Group值的Response值的累積和
示例
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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP