如何在 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
廣告