Я понимаю, что есть похожие вопросы, однако я не могу найти правильный ответ для моего запроса. У меня есть набор данных, где я хочу усреднить данные в одном столбце с 5-минутными интервалами на основе моей отметки времени, причем усреднение начинается в начале часа, например, среднее значение в 10:00 в течение предшествующих 5 минут, что будет 09: 56-10: 00.Усреднение по временным интервалам для предшествующего 5-минутного бина из даты и времени
Вот пример моего набора данных:
data <- structure(list(datetime = c("11/07/2013 19:20", "11/07/2013 19:21",
"11/07/2013 19:22", "11/07/2013 19:23", "11/07/2013 19:24", "11/07/2013 19:25",
"11/07/2013 19:26", "11/07/2013 19:27", "11/07/2013 19:28", "11/07/2013 19:29",
"11/07/2013 19:30", "11/07/2013 19:31", "11/07/2013 19:32", "11/07/2013 19:33",
"11/07/2013 19:34", "11/07/2013 19:35", "11/07/2013 19:36", "11/07/2013 19:37",
"11/07/2013 19:38", "11/07/2013 19:39", "11/07/2013 19:40", "11/07/2013 19:41",
"11/07/2013 19:42", "11/07/2013 19:43", "11/07/2013 19:44", "11/07/2013 19:45"
), met = c(-24.24081371, -24.4280008, -24.35142264, -24.84884114,
-25.06214408, -25.46749039, -25.44670288, -25.86062294, -26.30899817,
-26.57565791, -26.6866101, -27.03829228, -27.34621325, -27.91269122,
-28.60861612, -29.16745075, -28.81285096, -29.89737508, -30.26500716,
-30.08502411, -31.05084494, -31.21356991, -31.05715444, -32.29645243,
-32.76946492, -32.69307397)), .Names = c("datetime", "met"),
class = "data.frame", row.names = c(NA, -26L))
Я попытался код ниже, но я не смог заставить его работать так, как я хочу.
> data$datetime <- as.POSIXct(data$datetime, format="%m/%d/%Y %H:%M")
> groups <- cut(data$datetime, breaks="5 min")
> by(data$met, groups, mean)
groups: 2013-07-11 19:20:00
[1] -24.58624
------------------------------------------------------------------------
groups: 2013-07-11 19:25:00
[1] -25.93189
------------------------------------------------------------------------
groups: 2013-07-11 19:30:00
[1] -27.51848
------------------------------------------------------------------------
groups: 2013-07-11 19:35:00
[1] -29.64554
------------------------------------------------------------------------
groups: 2013-07-11 19:40:00
[1] -31.6775
------------------------------------------------------------------------
groups: 2013-07-11 19:45:00
[1] -32.69307
Эти правильные средние, но метка времени в первый раз штамп 5-минутного периода времени, а не последним, поэтому 12:01 дается R на самом деле 12:05 (период от 12:01 - 12:05). К сожалению, я не могу получить вывод в формате, например 12/07/2013 12:05 -19.91691
.
Итак 'data $ datetime <- as.POSIXct (данные $ datetime, format ="% m /% d /% Y% H:% M "); (группы <- cut (данные $ datetime, breaks = "5 min")) 'не совсем то, что вы искали, не так ли? – lukeA
Спасибо за ваш комментарий, я уже использовал 'data $ datetime <- as.POSIXct (данные $ datetime, format ="% m /% d /% Y% H:% M ")' и '(группы <- cut (data $ datetime, breaks = "5 min") 'и' met.5min <- by (данные $ met.day.night, groups, mean) ', однако он не находится на правильном интервале и находится в кадре данных, который Я не знаю, как экспортировать (извините мое невежество!) – squishy
Просьба представить ожидаемый результат. Неясно, хотите ли вы 5-минутное среднее значение в каждой точке ваших данных или если вы хотите объединить, так что у вас есть только одно наблюдение каждые 5 минут –