R Выберите диапазон дат за несколько лет и рассчитайте среднее значение - PullRequest
1 голос
/ 15 апреля 2020

У меня есть фрейм данных с почасовыми данными за 5 лет. Я хочу рассчитать среднечасовое значение (то есть среднее значение для каждого часа дня, 1:24) значений между двумя датами (например, с 15 марта по 15 апреля) за несколько лет и сравнить это с почасовым среднее значение за прошлый год.

Вот пример данных:

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 Ответ

2 голосов
/ 15 апреля 2020

Мы можем 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...