我正在尝试使用R XTS包来。分钟从5米创建15米和30米的时间序列。我有一个xts对象,这是日期时间,然后是OHLC。有关xts对象x的信息如下:
head(x)显示以下内容:
High Low Open Close Volume
2010-05-03 09:00:00 106.08 105.95 106.06 106.00 1055
2010-05-03 09:05:00 106.03 105.75 106.00 105.77 4369
2010-05-03 09:10:00 105.77 105.59 105.77 105.68 4125
2010-05-03 09:15:00 105.84 105.66 105.69 105.80 2457
2010-05-03 09:20:00 105.89 105.71 105.80 105.83 1788
2010-05-03 09:25:00 105.89 105.78 105.84 105.78 977
str(x)显示以下内容:
> str(x)
‘zoo’ series from 2010-05-03 09:00:00 to 2013-06-10 14:30:00
Data: num [1:222473, 1:5] 106 106 106 106 106 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "High" "Low" "Open" "Close" ...
Index: POSIXct[1:222473], format: "2010-05-03 09:00:00" "2010-05-03 09:05:00" "2010-05-03 09:10:00" ...
str(head(index(x)))显示以下内容:
head(str(index(x)))
POSIXct[1:222473], format: "2010-05-03 09:00:00" "2010-05-03 09:05:00" "2010-05-03 09:10:00" ...
NULL
当我将时间序列转换为15米时,系列会在09:10:00开始,然后是15分钟的增量,而不是从09:15:00开始,然后是15分钟的增量
> head(to.minutes(x, k=15))
x.Open x.High x.Low x.Close x.Volume
2010-05-03 09:10:00 106.08 105.95 105.77 105.68 9549
2010-05-03 09:25:00 105.84 105.78 105.69 105.78 5222
2010-05-03 09:40:00 105.80 105.92 105.62 106.12 9727
2010-05-03 09:55:00 106.17 106.00 106.01 106.22 6320
2010-05-03 10:10:00 106.26 106.07 106.15 106.14 8422
2010-05-03 10:25:00 106.57 106.38 106.15 106.37 10422
当我将时间序列转换为30米时,同样的问题,系列从09:25:00开始,接着是30分钟的增量,而不是从09:30:00开始,接着是30分钟的增量
> head(to.minutes(x, k=30))
x.Open x.High x.Low x.Close x.Volume
2010-05-03 09:25:00 106.08 105.95 105.69 105.78 14771
2010-05-03 09:55:00 105.80 106.00 105.62 106.22 16047
2010-05-03 10:25:00 106.26 106.38 106.15 106.37 18844
2010-05-03 10:55:00 106.37 106.27 106.01 106.00 17193
2010-05-03 11:25:00 106.04 106.20 105.95 106.29 9075
2010-05-03 11:55:00 106.34 106.35 106.24 106.39 8517
我也尝试过使用1分钟数据并遇到同样的问题。有什么可能导致这个问题以及如何解决它?感谢
答案 0 :(得分:4)
?to.minutes
帮助页面上已经清楚地描述了这一点。默认情况下,组在数据末尾开始并向后工作,因此不必注意第一个值是什么。但是,您可以明确地将indexAt=
参数设置为"startof"
。例如
x <- zoo(runif(25), order.by=seq(as.POSIXct("2010-05-03 09:00:00"),
as.POSIXct("2010-05-03 11:00:00"), by="5 min"))
to.minutes15(x)
# x.Open x.High x.Low x.Close
# 2010-05-03 09:10:00 0.35570172 0.3557017 0.04524480 0.04524480
# 2010-05-03 09:25:00 0.78939084 0.7893908 0.44032175 0.44032175
# 2010-05-03 09:40:00 0.05272398 0.5381755 0.05272398 0.53817548
# 2010-05-03 09:55:00 0.02198503 0.1113298 0.02198503 0.11132980
# 2010-05-03 10:10:00 0.78785210 0.8804505 0.04152860 0.04152860
# 2010-05-03 10:25:00 0.79317091 0.9497044 0.54751546 0.94970444
# 2010-05-03 10:40:00 0.03886176 0.7425681 0.03886176 0.06614893
# 2010-05-03 10:55:00 0.58684500 0.5868450 0.02794687 0.14291696
# 2010-05-03 11:00:00 0.11713868 0.1171387 0.11713868 0.11713868
与
to.minutes15(x, indexAt="startof")
# x.Open x.High x.Low x.Close
# 2010-05-03 09:00:00 0.35570172 0.3557017 0.04524480 0.04524480
# 2010-05-03 09:15:00 0.78939084 0.7893908 0.44032175 0.44032175
# 2010-05-03 09:30:00 0.05272398 0.5381755 0.05272398 0.53817548
# 2010-05-03 09:45:00 0.02198503 0.1113298 0.02198503 0.11132980
# 2010-05-03 10:00:00 0.78785210 0.8804505 0.04152860 0.04152860
# 2010-05-03 10:15:00 0.79317091 0.9497044 0.54751546 0.94970444
# 2010-05-03 10:30:00 0.03886176 0.7425681 0.03886176 0.06614893
# 2010-05-03 10:45:00 0.58684500 0.5868450 0.02794687 0.14291696
# 2010-05-03 11:00:00 0.11713868 0.1171387 0.11713868 0.11713868