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

R选择多年的日期范围,并计算值的平均值,r,datetime,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

我有一个数据框架,每小时数据运行超过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

我们可以
根据“开始”、“结束”日期过滤
,然后按“小时”“年”分组,得到
平均值

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))
库(lubridate)
图书馆(dplyr)
df%>%
过滤器((日(日期时间)>=15和月(日期时间)==3)|
(日(日期时间)%
分组依据(小时=小时(日期时间),年=年(日期时间))%>%
总结(值=平均值)

如果起始日期为03-15,您是否需要2011-2014年的平均值2011-03-15至2011-04-15,2012-03-15至2012-04-15,2013-03-15至2013-04-15,2014-03-15至2014-04-15。与2015-03-15至2015-04-15的平均值相比,您指的是03-15的是年的一天,而不是一个月?年月日:2011-3-15至2011-4-15…@llik您能检查一下吗下面的解决方案是否有效