[R+;zoo]:对具有不同时间分辨率的时间序列的操作

[R+;zoo]:对具有不同时间分辨率的时间序列的操作,r,time-series,xts,zoo,R,Time Series,Xts,Zoo,我有两个不同时间分辨率的时间序列(传感器数据)。类“xts/zoo”(TS1)的时间序列包括小时值,而其他时间序列(TS2)具有更好的时间分辨率(每10分钟观察一次)。即,对于TS1,我每天有24个数据点(观察值),对于TS2,我每天有144个数据点 当我计算一天的TS1-TS2时,我得到了24个数据点的结果(低时间分辨率)。我想要实现的是获得144个数据点的结果(如TS2,更好的时间分辨率) 有可能在R中实现这一点吗 附言: 这不是一个简单的问题,因为在每小时的间隔内,我只有一个来自TS1的观

我有两个不同时间分辨率的时间序列(传感器数据)。类“xts/zoo”(TS1)的时间序列包括小时值,而其他时间序列(TS2)具有更好的时间分辨率(每10分钟观察一次)。即,对于TS1,我每天有24个数据点(观察值),对于TS2,我每天有144个数据点

当我计算一天的
TS1-TS2
时,我得到了24个数据点的结果(低时间分辨率)。我想要实现的是获得144个数据点的结果(如TS2,更好的时间分辨率)

有可能在R中实现这一点吗

附言:


这不是一个简单的问题,因为在每小时的间隔内,我只有一个来自TS1的观测值和来自TS2的6个观测值,所以我可以想象,如果在TS1的每两个点之间画一条拟合线,并计算线和来自TS2的数据点之间的差,这个问题就可以解决。但是我知道没有R函数可以做到这一点。

对于线性/常数近似,可以使用
na.approx
来近似缺少的值;对于多项式近似,可以使用na.spline来近似缺少的值

## new index to be used 
new.index <- 
  seq(min(index(TS1)),max(index(TS1)), by=as.difftime(10,units='mins'))
## linear approx
TS1.new  <- na.approx(merge(TS1 ,xts(NULL,new.index)))

或者
na.locf
,如果您的应用程序觉得线性插值错误,则在整个小时内使用相同的值。(反过来说,
na.spline
尝试拟合曲线而不是直线。)
TS2-TS1.new