У меня проблема с применением функции (мин) для определенного повторяющегося периода времени. В основном мои данные выглядят как в этом примере:
library(xts)
start <- as.POSIXct("2018-05-18 00:00")
tseq <- seq(from = start, length.out = 1440, by = "10 mins")
Measurings <- data.frame(
Time = tseq,
Temp = sample(10:37,1440, replace = TRUE, set.seed(seed = 10)))
)
Measurings_xts <- xts(Measurings[,-1], Measurings$Time)
с очень признательной помощью ( здесь ) мне удалось выяснить, что должны быть определены функции min
и max
(в отличие от mean
, который работает сразу в period.apply
) с помощью вспомогательной функции и затем может быть вычислен для логических аргументов даты-времени (часы, дни, годы ...) с помощью этого решения:
colMin <- function(x, na.rm = FALSE) {
apply(x, 2, min, na.rm = na.rm)
}
epHours <- endpoints(Measurings_xts, "hours")
Measurings_min <- period.apply(Measurings_xts, epHours, colMin)
Для метеорологического анализа мне нужно рассчитать дополнительные минимумы для менее интуитивного промежутка времени, пересекающего календарный день, который я не могу определить в коде:
Мне нужно вывести минимальную ночную температуру, например, из 2018-05-18 19:00
до 2018-05-19 7:00
утром за каждую ночь в моем наборе данных.
Я пытался переместить временной интервал, манипулируя (перемещая) временной столбец вверх или вниз, чтобы включить ночное время в один календарный день. Поскольку это решение подвержено ошибкам и не работает для моих реальных данных, где некоторые наблюдения отсутствуют. Как использовать функции POSIXct datetime
и / или xts
для расчета минимумов в этом случае?