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