我有10分钟的数据,试图将其汇总为每小时的数据。我正在使用POSIXct格式的时间字段。我发现了一个类似的问题here。我想按小时对数据进行分组,但是要保留一年中每小时的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))
答案 0 :(得分:0)
我问了一个能够提供对我有用的答案的同事。我想分享成功的结果,以防与他人相关。分组后使用摘要并应用min(time)可以保留具有“%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))
答案 1 :(得分:0)
为此,我建议lubridate::floor_date
。它将四舍五入到最后一个小时,为您提供分组的日期时间。
summary_df <- long_df %>%
group_by(hour = lubridate::floor_date(time, "1 hour"), discrete_variable) %>%
summarise(max_continuous_variable = max(continuous_variable))