R选择多年的日期范围并计算值的平均值

时间:2020-04-14 21:50:19

标签: r datetime

我有一个数据框架,其中每小时运行5年以上的数据。我想计算几年中两个日期(例如3月15日至4月15日)之间的每小时均值(即一天中每小时的平均值,即1:24),并将其与每小时比较去年的平均值。

以下是数据示例:

start = as.POSIXct(strptime("2011-01-01 01:00", "%Y-%m-%d %H:%M"))
end   = as.POSIXct(strptime("2016-01-01 01:00", "%Y-%m-%d %H:%M"))
df = data.frame(DateTime = seq(from = start, to = end,by = "hours"))
df$value = runif(nrow(df))

Start_Period = "03-15"
End_Period = "04-15"

输出应如下所示:

Hour   mean(2011-2014) mean(2015)
1      0.3             0.5
...
24     0.8             0.6

1 个答案:

答案 0 :(得分:2)

我们可以根据“开始”,“结束”日期filter进行分组,然后按“小时”“年”进行分组并获得mean

library(lubridate)
library(dplyr)   
df %>%
    filter((day(DateTime) >= 15 & month(DateTime) == 3)|
          (day(DateTime) <= 15 & month(DateTime) ==  4))   %>% 
    group_by(hour = hour(DateTime), year = year(DateTime)) %>% 
    summarise(value = mean(value))
相关问题