在 R 資料框中建立滾動均值列,顯示對應值的均值。


為了在 R 資料框中建立滾動均值列並顯示對應值的均值,我們可以使用 ave 函式和 rep 函式。

例如,如果我們有一個名為 df 的資料框,其中包含一個數值列 X,那麼我們可以使用以下命令為每 5 個值建立一個滾動均值列:

df$Rolling_M_5<-ave(df$X,rep(1:(nrow(df)/5),each=5),FUN=function(x){mean(x)})

示例 1

以下程式碼片段建立一個示例資料框:

x<-rnorm(20)
df1<-data.frame(x)
df1

建立了以下資料框

            x
 1  0.54695282
 2 -2.14433689
 3  0.60614761
 4  1.42172678
 5  1.45355367
 6  0.27851529
 7  0.43483588
 8  3.10239061
 9  1.26224723
10 -0.04519611
11 -1.22239574
12  1.04256580
13 -0.44032532
14  1.41468774
15 -0.15795517
16 -0.18538886
17 -0.82291711
18 -0.56077655
19  1.75063692
20  0.23353949

為了在上述建立的資料框中建立滾動均值列 df1,並顯示對應於每個值的均值,請將以下程式碼新增到上述程式碼片段:

x<-rnorm(20)
df1<-data.frame(x)
df1$Rolling_Mean_4<-ave(df1$x,rep(1:(nrow(df1)/4),each=4),FUN=function(x){mean(x)})
df1

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出:

            x    Rolling_Mean_4
 1  0.54695282 0.1076226
 2 -2.14433689 0.1076226
 3  0.60614761 0.1076226
 4  1.42172678 0.1076226
 5  1.45355367 1.3173239
 6  0.27851529 1.3173239
 7  0.43483588 1.3173239
 8  3.10239061 1.3173239
 9  1.26224723 0.2593053
10 -0.04519611 0.2593053
11 -1.22239574 0.2593053
12  1.04256580 0.2593053
13 -0.44032532 0.1577546
14  1.41468774 0.1577546
15 -0.15795517 0.1577546
16 -0.18538886 0.1577546
17 -0.82291711 0.1501207
18 -0.56077655 0.1501207
19  1.75063692 0.1501207
20  0.23353949 0.1501207

示例 2

以下程式碼片段建立一個示例資料框:

y<-rpois(20,10)
df2<-data.frame(y)
df2

建立了以下資料框

    y
 1  6
 2 11
 3 12
 4 15
 5  5
 6 12
 7 11
 8 15
 9 13
10  9
11  9
12  4
13  9
14 10
15  7
16  8
17  6
18  9
19 13
20 11

為了在上述建立的資料框中建立滾動均值列 df2,並顯示對應於每個值的均值,請將以下程式碼新增到上述程式碼片段:

y<-rpois(20,10)
df2<-data.frame(y)
df2$Rolling_Mean_2<-ave(df2$y,rep(1:(nrow(df2)/2),each=2),FUN=function(x){mean(x)})
df2

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出:

 y    Rolling_Mean_2
 1  6  8.5
 2 11  8.5
 3 12 13.5
 4 15 13.5
 5  5  8.5
 6 12  8.5
 7 11 13.0
 8 15 13.0
 9 13 11.0
10  9 11.0
11  9  6.5
12  4  6.5
13  9  9.5
14 10  9.5
15  7  7.5
16  8  7.5
17  6  7.5
18  9  7.5
19 13 12.0
20 11 12.0

更新於:2021年11月5日

瀏覽量:187

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.