Как можно сгруппировать данные по часам и сохранить поле с указанием времени и даты («% Y-% m-% d% H:% M:% S»)? - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть данные за десять минут, которые я пытаюсь объединить в почасовые данные. Я использую поле времени в формате POSIXct. Я нашел похожий вопрос, поставленный здесь . Я хотел бы сгруппировать данные по часам, но сохранить поле в формате POSIXct для каждого часа в течение года ("% Y-% m-% d% H:% M:% S"). Кроме того, я надеюсь сохранить все поля в моем исходном фрейме данных, за исключением того, что я передаю для суммирования с помощью dplyr. Я сталкиваюсь с проблемами при использовании group_by_at, который вызывает следующую ошибку:

Ошибка в as.POSIXlt.default (x, tz = tz (x)): не знаю, как преобразовать 'x' вкласс «POSIXlt»

Когда я пытаюсь просто использовать group_by, он работает, но преобразует формат ymd_hms в% h. Есть ли способ сохранить этот формат без изменений при группировке по часам? Есть ли более эффективный способ сгруппировать десятиминутные данные в почасовой формат?

Вот пример того, что работает, но удаляет формат ymd_hms:

summary_df <- long_df %>%
  group_by(hour = lubridate::hour(time), discrete_variable) %>%
  summarise(max_continuous_variable = max(continuous_variable))

1 Ответ

0 голосов
/ 11 декабря 2019

Я спросил коллегу, который смог дать ответ, который работал для меня. Я хотел бы поделиться успешным результатом в случае, если это имеет отношение к другим. Использование суммирования и применения мин (время) после группировки работало, чтобы сохранить поле времени, которое имеет «% Y-% m-% d% H:% M:% S».

summary_df <- long_df %>%
  group_by(hour = lubridate::hour(time), discrete_variable) %>%
  summarise(max_continuous_variable = max(continuous_variable),
            time = min(time))
...