我有两个要合并的时间序列activity
:(几乎)是正常的,有5分钟的时间步长;另一个temperature
,是不规则的时间序列,其时间戳在任何时候都不匹配中的时间戳activity
。
我想将“温度$ temp”列添加到数据集中activity
,使用不存在临时记录的时间的NA,并将实际的临时记录分配给中的最接近的时间戳activity
。(或者最接近的前一个或后一个时间戳)。
以前,我使用roxfun函数对温度数据进行插值以匹配活动时间序列,但是这并不理想,我只想包含实际记录的温度。
到目前为止,我一直无法修改在堆栈溢出和其他地方发布的类似时间序列问题的解决方案,因为它们要么假设时间序列在某些时候匹配,要么它们的目标是合并时间序列的输出,以便包括这两个数据集,这里都不是。
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")
如果您能给我任何帮助或建议,我将不胜感激。
roll=
data.table中的工具可以执行以下操作:
library(data.table)
activity.dt <- data.table(activity, key="Date")[,Date2:=Date]
temperature.dt <- data.table(temperature)
activity.dt[temperature.dt, list(Date=Date2, temp), roll=-Inf][
activity.dt, list(Date, Activity, temp)]
给予:
Date Activity temp
1: 2012-10-18 06:36:59 300 NA
2: 2012-10-18 06:41:59 300 NA
3: 2012-10-18 06:46:59 300 NA
4: 2012-10-18 06:51:59 300 NA
5: 2012-10-18 06:56:59 300 12.625
6: 2012-10-18 07:01:59 300 NA
7: 2012-10-18 07:06:59 300 NA
8: 2012-10-18 07:11:59 207 NA
9: 2012-10-18 07:16:59 0 NA
10: 2012-10-18 07:21:59 0 NA
11: 2012-10-18 07:26:59 0 NA
12: 2012-10-18 07:31:59 0 NA
13: 2012-10-18 07:36:59 153 NA
14: 2012-10-18 07:41:59 300 NA
15: 2012-10-18 07:46:59 300 NA
16: 2012-10-18 07:51:59 300 NA
17: 2012-10-18 07:56:59 300 NA
18: 2012-10-18 08:01:59 300 12.500
19: 2012-10-18 08:06:59 300 NA
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句