У меня есть набор данных со значениями каждую минуту, и я хочу рассчитать среднее значение для каждого часа.Я попытался с помощью group_by (), filter () и Sumumize () из пакета dplyr, чтобы уменьшить данные каждый час.Когда я использую только эти функции, я могу получить среднее значение для каждого часа, но только для каждого месяца, и я хочу его для каждого дня.
> head(DF)
datetime pw cu year m d hr min
1 2017-08-18 14:56:00 0.0630341 1.94065 2017 8 18 14 53
2 2017-08-18 14:57:00 0.0604653 1.86771 2017 8 18 14 57
3 2017-08-18 14:58:00 0.0601318 1.86596 2017 8 18 14 58
4 2017-08-18 14:59:00 0.0599276 1.83761 2017 8 18 14 59
5 2017-08-18 15:00:00 0.0598998 1.84177 2017 8 18 15 0
Мне пришлось использовать цикл for, чтобы уменьшить мою таблицу,Для этого я написал следующее:
datetime <- c()
eg_bf <-c ()
for(i in 1:8760){
hour= start + 3600
DF= DF %>%
filter(datetime >= start & datetime < hour) %>%
summarise(eg= mean(pw))
datetime= append(datetime, start)
eg_bf= append(eg_bf, DF$eg)
start= hour
}
new_DF= data.frame(datetime, eg_bf)
Итак.Я смог получить свой новый набор данных со средним значением за каждый час года.
datetime eg_bf
1 2018-01-01 00:00:00 0.025
2 2018-01-01 01:00:00 0.003
3 2018-01-01 02:00:00 0.002
4 2018-01-01 03:00:00 0.010
5 2018-01-01 04:00:00 0.015
Проблема, с которой я сталкиваюсь, заключается в том, что это занимает много времени.Идея состоит в том, чтобы добавить этот расчет в блестящий пользовательский интерфейс, поэтому каждый раз, когда я делаю изменение, оно должно делать изменения быстрее.Есть идеи, как улучшить этот расчет?