首页 > 解决方案 > 使用 POSIXct 在 R 中合并数据帧

问题描述

我有两个数据帧(per_frame,值) - 第一个包含 24 小时周期的 POSIXct 值,间隔为 15 分钟。

periods = as.POSIXct(seq.POSIXt("2019-06-01 04:00:00 UTC","2019-06-02 03:45:00 UTC", by=900))

per_frame = data.frame(Period = periods)

第二个包含一列用于上述一些时间值(但不是全部)和另一列用于“平均值”。

时期 avg_value
2019-06-01 04:45:00 4
2019-06-01 05:00:00 7
2019-06-01 05:45:00 9
2019-06-01 08:45:00 2
2019-06-01 10:00:00 4

我想创建一个新的数据框,将可用的平均值添加到第一个数据框,在没有的地方留下“缺失值”。我认为这可以使用以下方法轻松实现:

Combined= merge(per_frame, values, by = "Period", all.x = TRUE)

但是,它创建的新数据框对于每个 Period 都有不正确的值。它将值添加到值数据框中没有相应平均值的某些时间段。我不确定我在这里做错了什么?

标签: rmerge

解决方案


道歉 - 经过一番调查,我意识到两个数据库中使用的时区不同 - 因此在合并时不匹配。我实际上不确定为什么会发生这种情况,因为我使用相同的数据导入来生成第一个数据帧的开始和结束值以及第二个数据帧的值。尽管使用 as.POSIXct 函数中的 'tz' 值,我还是能够覆盖它。


推荐阅读