【发布时间】:2020-12-30 11:03:26
【问题描述】:
我有两个数据帧(per_frame, values) - 第一个包含 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)
第二个包含一列用于上面的一些时间值(但不是全部),另一列用于“平均值”。
| Period | 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 的值都不正确。它将值添加到值数据框中没有相应平均值的某些时间段。我不确定我在这里做错了什么?
【问题讨论】:
-
不确定您的序列创建代码是否完全正确。你的意思是
seq.POSIXt(as.POSIXct("2019-06-01 04:00:00 UTC"), as.POSIXct("2019-06-02 03:45:00 UTC"), by = 900)吗?此外,您的第二个数据框不是以理想的方式提供的。另外,第二个数据框中的 Period 列是什么类?也是POSIXct吗? -
道歉 - 如果没有包含大量信息,我真的不知道如何解释我的第二个数据框。我意识到(出于某种我不明白的原因)第一个数据帧的时间值是 tz UTC,而第二个数据帧是 BST。因此不匹配。
-
很好的解决方案,有趣的问题。为了完整起见 - 对于这个问题,您可以简单地对第二个数据帧的 5 行进行采样并使用
dput(your data frame)输出它 - 这样我们就会看到结构并且可能能够更好地重现问题跨度>