【发布时间】:2014-08-21 16:11:36
【问题描述】:
我有两个要合并的时间序列:activity (几乎)是规则的,时间步长为 5 分钟,另一个 temperature 是不规则的时间序列,其时间戳在任何时候都不匹配activity 中的时间戳。
我想将列“temperature$temp”添加到数据集activity,其中 NA 表示没有临时记录的时间,实际临时记录分配给activity 中最接近的时间戳。 (也可以选择最接近的之前或之后的时间戳)。
之前我使用 approxfun 函数插入温度数据以匹配活动时间序列,但这并不理想,我只想包括实际记录的温度。
到目前为止,我一直无法修改在堆栈溢出和其他地方发布的类似时间序列问题的解决方案,因为它们要么假设时间序列在某些时候会匹配,要么它们的目标是合并时间序列的输出,以便两个数据集的时间戳都包括在内,这里都不是。
activity <- structure(list(Date = structure(c(1350542219, 1350542519, 1350542819,
1350543119, 1350543419, 1350543719, 1350544019, 1350544319, 1350544619,
1350544919, 1350545219, 1350545519, 1350545819, 1350546119, 1350546419,
1350546719, 1350547019, 1350547319, 1350547619), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), Activity = c(300, 300, 300, 300, 300,
300, 300, 207, 0, 0, 0, 0, 153, 300, 300, 300, 300, 300, 300)), .Names = c("Date",
"Activity"), row.names = 1220:1238, class = "data.frame")
temperature <- structure(list(Date = structure(c(1350543180, 1350547140), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), temp = c(12.625, 12.5)), .Names = c("Date",
"temp"), row.names = 2:3, class = "data.frame")
output <- structure(list(Date = structure(c(1350542219, 1350542519, 1350542819,
1350543119, 1350543419, 1350543719, 1350544019, 1350544319, 1350544619,
1350544919, 1350545219, 1350545519, 1350545819, 1350546119, 1350546419,
1350546719, 1350547019, 1350547319, 1350547619), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), Activity = c(300, 300, 300, 300, 300,
300, 300, 207, 0, 0, 0, 0, 153, 300, 300, 300, 300, 300, 300),
temp = c(NA, NA, NA, 12.625, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 12.5, NA)), .Names = c("Date", "Activity",
"temp"), row.names = 1220:1238, class = "data.frame")
如果您能给我任何帮助或建议,我将不胜感激。
【问题讨论】:
标签: r datetime merge time-series