如何在 R 中根據日期對列進行分組並求平均值?


要查詢按日期分組的列的平均值,我們可以簡單地使用 aggregate 函式。例如,如果我們有一個名為 df 的資料框,其中包含一個日期列,例如 Date,以及一個數值列,例如 Num,那麼我們可以使用以下命令查詢 Num 按 Date 列中日期的平均值:

aggregate(Num~Date,df,mean)

示例 1

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

Date<-
sample(c(as.Date("2021/05/01"),as.Date("2021/05/10"),as.Date("2021/05/15"),as.Date("2021/05/20")),20,replace=TRUE)
Sales<-sample(100:500,20)
df1<-data.frame(Date,Sales)
df1

建立了以下資料框

       Date  Sales
1  2021-05-15 221
2  2021-05-10 414
3  2021-05-20 469
4  2021-05-01 101
5  2021-05-20 313
6  2021-05-15 264
7  2021-05-01 302
8  2021-05-01 137
9  2021-05-15 109
10 2021-05-01 126
11 2021-05-20 498
12 2021-05-20 163
13 2021-05-01 446
14 2021-05-20 318
15 2021-05-15 180
16 2021-05-20 291
17 2021-05-10 390
18 2021-05-10 139
19 2021-05-15 337
20 2021-05-20 231

要在上面建立的資料框中查詢按日期的 Sales 平均值,請將以下程式碼新增到上述程式碼片段中:

Date<-
sample(c(as.Date("2021/05/01"),as.Date("2021/05/10"),as.Date("2021/05/15"),as.Date("2021/05/20")),20,replace=TRUE)
Sales<-sample(100:500,20)
df1<-data.frame(Date,Sales)
aggregate(Sales~Date,df1,mean)

輸出

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

       Date   Sales
1 2021-05-01 222.4000
2 2021-05-10 314.3333
3 2021-05-15 222.2000
4 2021-05-20 326.1429

示例 2

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

Date<-
sample(c(as.Date("2021/01/01"),as.Date("2021/02/15"),as.Date("2021/02/22"),as.Date("2021/01/18")),20,replace=TRUE)
Result<-sample(1:50,20)
df2<-data.frame(Date,Result)
df2

建立了以下資料框

      Date    Result
1  2021-01-01 40
2  2021-02-22 19
3  2021-01-18 15
4  2021-02-15 39
5  2021-02-15 35
6  2021-02-22  1
7  2021-02-22 18
8  2021-01-18 46
9  2021-01-01 23
10 2021-02-15 50
11 2021-02-22 12
12 2021-02-15 28
13 2021-02-15 48
14 2021-01-18 13
15 2021-02-15 11
16 2021-01-18 27
17 2021-01-01 22
18 2021-02-22 49
19 2021-02-15 45
20 2021-01-18 47

要在上面建立的資料框中查詢按日期的 Result 平均值,請將以下程式碼新增到上述程式碼片段中:

Date<-
sample(c(as.Date("2021/01/01"),as.Date("2021/02/15"),as.Date("2021/02/22"),as.Date("2021/01/18")),20,replace=TRUE)
Result<-sample(1:50,20)
df2<-data.frame(Date,Result)
aggregate(Result~Date,df2,mean)

輸出

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

       Date   Result
1 2021-01-01 28.33333
2 2021-01-18 29.60000
3 2021-02-15 36.57143
4 2021-02-22 19.80000

更新於: 2021-11-05

1K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告