R - Создать среднесуточное значение / макс / мин с максимальным количеством пропущенных значений - PullRequest
0 голосов
/ 25 сентября 2019

это мой фрейм данных:

library(lubridate)
datelist = seq(ymd_hms('1980-01-01 00:00:00'),ymd_hms('1980-07-01 00:00:00'), by = '60 mins')

df = data.frame(replicate(4,sample(0:130,4369,rep=TRUE)))
nbr_missing<-1000
y<-data.frame(row=sample(nrow(df),size = nbr_missing,replace = T),
              col=sample(ncol(df),size = nbr_missing,replace = T))

y<-y[!duplicated(y),]
df[as.matrix(y)]<-NA

testframe = as.data.frame(cbind(datelist,df))

Я хочу рассчитать среднедневные / максимальные / мин из почасовых данных.Но я хочу сделать это с разными условиями:

  1. Рассчитать среднее / мин / макс без допустимых пропущенных значений
  2. Рассчитать среднее / мин / макс со всеми 24 пропущенными значениями каждоедопустимый день
  3. Рассчитать среднее / минимальное / максимальное с максимальным из n пропущенных значений, разрешенных каждый день (например, максимум 5 пропущенных значений из 24)
  4. Рассчитать среднее / минимальное / максимальное с максимальнымиз n пропущенных значений допускается каждый день, но с интервалом не менее 3 часов, например: Пропущенные значения в 10:00, 11:00 и 15:00 не в порядке, пропущенные значения в 10:00, 15:00, 19:00 и 23:00..

Я вроде знаю, как рассчитать среднее значение, у меня есть эта команда, но она на самом деле не работает правильно:

library(dplyr)
testframe_natrue = testframe %>%
  group_by(group = gl(n()/24, 24)) %>%
  summarise_at(-1, mean, na.rm = TRUE)
...