我有一个xts时间序列,其中包含一列“timeInt”,其中包含以毫秒数表示的时间间隔的开头。 可以通过向此值添加600000毫秒(10分钟)来获得时间间隔的结束。 那么,我的数据范围应该是一天的10分钟周期(从00.00到23:50)。
所以我有这个xts
>head(sms, n=8)
squareId smsIN smsOUT
2013-12-01 1 0.11098917 0.16621437
2013-12-01 1 NA NA
2013-12-01 10 0.05482169 0.09364877
2013-12-01 10 NA NA
2013-12-01 100 0.04077425 NA
2013-12-01 1000 0.65962509 0.73610317
2013-12-01 10000 0.01432295 NA
如你所见,我有一个字段“squareId”,它被引用到地图中的一个单元格。有1000个细胞
>range(sms$squareId)
[1] 1 10000
问题在于我认为我无法获得正确的数据周期
>periodicity(sms)
0 seconds periodicity from 2013-12-01 to 2013-12-01 23:50:00
事实上,如果我绘制xts我得到这个(我只绘制一小时因为我有一个大的xts)
>plot.zoo(sms['T08:00/T09:00',-c(1)], plot.type = 'multiple' )
我尝试使用to.period()
函数
>to.period(sms, period='seconds', OHLC = F)
似乎我得到了正确的周期性
10 minute periodicity from 2013-12-01 to 2013-12-01 23:50:00
绘图似乎一切正常
但我意识到应用to.period()
多个squareId会丢失
> range(mi.dec01_xts$squareId)
[1] 9895 9999
问题是,如何正确调整10分钟间隔的xts?
如何在不丢失squareId信息的情况下应用to.period()
函数?
在这里,我使用reproduce.R
粘贴一个可重现的例子这是样本的样子:
squareId smsIN smsOUT
2013-12-01 00:00:00 1 0.11098917 0.16621437
2013-12-01 00:00:00 1 NA NA
2013-12-01 00:00:00 10 0.05482169 0.09364877
2013-12-01 00:00:00 10 NA NA
2013-12-01 00:00:00 100 0.04077425 NA
2013-12-01 00:00:00 100 0.16140787 0.12063361
2013-12-01 00:00:00 1000 0.65962509 0.73610317
2013-12-01 23:50:00 9998 NA NA
2013-12-01 23:50:00 9999 0.17198955 NA
2013-12-01 23:50:00 9999 0.08876703 NA
sms <- structure(c(1, 1, 10, 10, 100, 100, 1000, 9998, 9999, 9999,
0.110989169614244,NA, 0.0548216917417026, NA, 0.0407742548283372,
0.161407867214471,0.659625094191792, NA, 0.171989545769285,
0.0887670343758315,0.166214368861216, NA, 0.0936487714299922, NA, NA,
0.120633612386134,0.736103165655047, NA, NA, NA),
.indexCLASS = c("POSIXlt", "POSIXt"), tclass = c("POSIXlt", "POSIXt"),
.indexTZ = "UTC", tzone = "UTC", class = c("xts","zoo"),
index = structure(c(1385856000, 1385856000, 1385856000,1385856000,
1385856000, 1385856000, 1385856000, 1385941800, 1385941800,1385941800),
tzone = "UTC", tclass = c("POSIXlt", "POSIXt")), .Dim = c(10L,3L),
.Dimnames = list(NULL, c("squareId", "smsIN", "smsOUT")))