我有一个时间序列数据框架:
structure(list(Date_Time = structure(c(1685975396, 1685975406,
1685975416, 1685975426, 1685975436, 1685975446, 1685975457, 1685975467,
1685975477, 1685975487, 1685975497, 1685975507), tzone = "UTC", class = c("POSIXct",
"POSIXt")), `Heat Capacity` = c(-209L,
-209L, -203L, -202L, -197L, -196L, -191L, -185L, -185L, -184L,
-184L, -185L)), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))
字符串
我试着每隔15分钟调整数据
例如:
如果Date_Time列的范围为14:26到15:26
我希望Date_Time总结如下:14:30,14:45,15:00在哪里
在每个时间戳,如14:30,热容量值应仅具有前一分钟值。范例:
Time Heat_capacity
14:30 value at 14:29
型
样本数据和预期输出:
因此,2023年6月5日2:30pm的热容量值为2:29分钟的值
的数据
2条答案
按热度按时间q0qdq0h21#
您正在尝试使用上次观测值结转(LOCF)操作对时间序列进行重新采样。使用
data.table
和roll=+Inf
连接可以有效地完成这一操作。(dt[dt_regular, on = "Date_Time", roll=+Inf]
,其中dt
是您的数据,dt_regular
是一个data.table,其中有一个Date_Time列,间隔为15分钟)。考虑到你的例子:
字符串
在这里,我们允许最大结转15分钟,以摆脱右侧的缓冲时间。如果在之前的15分钟内没有测量,则这可能导致网格时间点下降。如果这还不能满足您的需求,您需要更具体地说明您想要处理的时间范围或如何处理这些情况。
然而,您可能希望使用例如直接处理您的不等距时间点。
fable
或使用平均或插值代替。sdnqo3pr2#
您可以使用lubridate包中的
round_date
:字符串
回合时间至满15分钟。
dplyr
的完整工作流程如下所示:型