计算r中数据框的每日平均值

时间:2020-04-29 14:22:25

标签: r

我在r中有一个数据框,其中每个小时的每五分钟包含几个月的读数。我想计算var3(下数据框)的每日平均值,并将其添加为var4到此数据框中。

这是我的df:

>df
         timestamp           Var1         Var2        Var3 
1    2018-07-20 13:50:00   32.0358        28.1        3.6       
2    2018-07-20 13:55:00   32.0358        28.0        2.5       
3    2018-07-20 14:00:00   32.0358        28.1        2.2 

我从搜索论坛中找到了这种解决方案,但这引起了错误。

这是我正在应用的解决方案:

aggregate(ts(df$var3[, 2], freq = 288), 1, mean)

这是我得到的错误:

Error in df$var3[, 2] : incorrect number of dimensions

我认为这也应该适用于我的数据框,但无法消除此错误。请帮忙。

1 个答案:

答案 0 :(得分:0)

这是使用dplyrlubridate的方法。

library(dplyr)
library(lubridate)
df %>% 
  group_by(Day = day(ymd_hms(timestamp))) %>%
  mutate(Var4 = mean(Var3))
## A tibble: 1,000 x 6
## Groups:   Day [5]
#   timestamp            Var1  Var2  Var3   Day  Var4
#   <dttm>              <dbl> <dbl> <dbl> <int> <dbl>
# 1 2018-07-20 13:55:30  32.2  22.9  2.35    20  2.99
# 2 2018-07-20 14:00:30  37.7  24.8  2.99    20  2.99
# 3 2018-07-20 14:05:30  38.7  29.6  3.47    20  2.99
# 4 2018-07-20 14:10:30  30.4  24.2  3.02    20  2.99
# 5 2018-07-20 14:15:30  32.0  28.4  2.95    20  2.99
## … with 995 more rows

样本数据

df <- data.frame(timestamp = ymd_hms("2018-07-20 13:50:30") + 60*5 * 1:1000,
                   Var1 = runif(100,30,40),
                   Var2 = runif(100,20,30),
                   Var3 = runif(100,2,4))