我有一个数据框架,其中每小时运行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
答案 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))