我有一个不规则间隔的XTS
时间序列(POSIXct
值作为索引类型)。
我如何构建一个以假设 10 分钟间隔采样的新时间序列,但每个采样时刻都与一个圆形时间对齐(13:00:00、13:10:00、13:20:00,...) . 如果重采样时刻不完全落在原始序列值上,我想采用前一个。
我有一个不规则间隔的XTS
时间序列(POSIXct
值作为索引类型)。
我如何构建一个以假设 10 分钟间隔采样的新时间序列,但每个采样时刻都与一个圆形时间对齐(13:00:00、13:10:00、13:20:00,...) . 如果重采样时刻不完全落在原始序列值上,我想采用前一个。
library(xts)
?endpoints
例如
tmp=zoo(rnorm(1000), as.POSIXct("2010-02-1")+(1:1000)*60)
tmp[endpoints(tmp, "minutes", 20)]
每 20 分钟进行二次采样。您可能还想查看to.minutes
,to.daily
等。
我仍然不确定你要做什么,我仍然认为一个例子会有所帮助,但我想我猜你可能对align.time
.
# Compare this:
tmp[endpoints(tmp, "minutes", 20)]
# with this:
align.time( tmp[endpoints(tmp, "minutes", 20)], n=60*20 )
如果a
是具有第二分辨率条目的 xts 对象,则这会取消所有秒数: index(a)=trunc(index(a),"mins")
您也可以使用它来舍入到“小时”分辨率。但不支持 10 分钟。为此,您必须这样做:
x=as.POSIXlt(index(a))
x$sec[]=0;x$min[]=x$min[]%/%10
index(a)=x
或者a=align.time.down(a,600)
你定义的地方:
align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)}
(在我自己的脚本中选择了最后一个选项。)