如何在 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+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告