R XTS to.minutes5(),未转换为;我";预期
嗨,我正在将一些1分钟的数据转换成5分钟的数据,我发现第一次增量需要4分钟,然后再继续进行5分钟的增量 我尝试过摆弄所有的“指数化”参数,但没有一个能给我我想要的,从5开始,然后是10、15、20等等 我试过了R XTS to.minutes5(),未转换为;我";预期,r,xts,R,Xts,嗨,我正在将一些1分钟的数据转换成5分钟的数据,我发现第一次增量需要4分钟,然后再继续进行5分钟的增量 我尝试过摆弄所有的“指数化”参数,但没有一个能给我我想要的,从5开始,然后是10、15、20等等 我试过了 x5 <- to.minutes5(x) 转换为5分钟后 clemtest.Open clemtest.High clemtest.Low clemtest.Close clemtest.Volume 2013-01-16 00:04:00
x5 <- to.minutes5(x)
转换为5分钟后
clemtest.Open clemtest.High clemtest.Low clemtest.Close clemtest.Volume
2013-01-16 00:04:00 93.55 93.60 93.54 93.57 27
2013-01-16 00:09:00 93.57 93.57 93.55 93.56 33
2013-01-16 00:14:00 93.56 93.57 93.56 93.57 8
2013-01-16 00:19:00 93.56 93.58 93.51 93.53 77
2013-01-16 00:24:00 93.53 93.55 93.49 93.49 121
2013-01-16 00:29:00 93.49 93.51 93.49 93.51 121
计算是正确的,它不是从前5分钟的数据开始,而是从4分钟开始,然后继续到5分钟
(使用indexAt='startof'给出了正确的,5,10,15…但当检查棒时,5分钟数据表示5分钟的开始(例如5-10分钟),而不是0-5分钟)
以下是1分钟数据的尾部,以供参考
Open High Low Close Volume
2013-01-17 23:53:00 95.52 95.52 95.52 95.52 2
2013-01-17 23:55:00 95.51 95.52 95.51 95.52 2
2013-01-17 23:56:00 95.51 95.51 95.51 95.51 1
2013-01-17 23:57:00 95.52 95.52 95.52 95.52 1
2013-01-17 23:59:00 95.52 95.52 95.51 95.51 4
2013-01-18 00:00:00 95.51 95.51 95.51 95.51 8
这就是你想要的吗(只用12分钟的数据,因为这就是你发布的全部)
x到.period
(因此到.minutes
,到.minutes5
等)使用每个间隔的端点来聚合数据。数据前5分钟的最后一次观察是在00:04:00,这就是您看到的。00:05:00是零小时内第二个5分钟间隔的开始。您可以添加一些关于为什么要这样做的详细信息吗?看看library(highfrequency)包,它们有一个名为aggregates()的函数,这可能就是您想要的@用户1736644Hi Joshua,我之所以要这样做是因为:我在多个时间范围内工作,滴答声,5分钟和60分钟都在同一个策略中。我希望第12个5分钟酒吧的结尾与60分钟酒吧相匹配。但是如果我得到4,9,14个小节,它就不匹配了。我希望第一个5分钟酒吧的收盘时间等于第五个1分钟酒吧的收盘时间,在这种情况下,第五个1分钟酒吧的收盘时间是93.70,因此我希望第一个5分钟酒吧的收盘时间是93.70,时间戳是00:05:00。(如果我查看00:00:00-00:04:59的刻度数据,它从93.55开始,在93.70结束)。谢谢如果你注意到音量,一天的前5分钟是从00:00:00到00:05:00,因此前5分钟的音量应该是5+5+5+12+21(48),如果有帮助的话,我还将1分钟数据的尾部添加到原始问题中
clemtest.Open clemtest.High clemtest.Low clemtest.Close clemtest.Volume
2013-01-16 00:04:00 93.55 93.60 93.54 93.57 27
2013-01-16 00:09:00 93.57 93.57 93.55 93.56 33
2013-01-16 00:14:00 93.56 93.57 93.56 93.57 8
2013-01-16 00:19:00 93.56 93.58 93.51 93.53 77
2013-01-16 00:24:00 93.53 93.55 93.49 93.49 121
2013-01-16 00:29:00 93.49 93.51 93.49 93.51 121
Open High Low Close Volume
2013-01-17 23:53:00 95.52 95.52 95.52 95.52 2
2013-01-17 23:55:00 95.51 95.52 95.51 95.52 2
2013-01-17 23:56:00 95.51 95.51 95.51 95.51 1
2013-01-17 23:57:00 95.52 95.52 95.52 95.52 1
2013-01-17 23:59:00 95.52 95.52 95.51 95.51 4
2013-01-18 00:00:00 95.51 95.51 95.51 95.51 8
x <- read.table(text ="
2013-01-16 00:01:00 93.55 93.60 93.54 93.58 5
2013-01-16 00:02:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:03:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:04:00 93.58 93.58 93.57 93.57 12
2013-01-16 00:05:00 93.57 93.57 93.55 93.70 21
2013-01-16 00:06:00 93.56 93.56 93.56 93.56 5
2013-01-16 00:07:00 93.56 93.56 93.55 93.55 3
2013-01-16 00:08:00 93.55 93.55 93.55 93.55 2
2013-01-16 00:09:00 93.55 93.56 93.55 93.56 2
2013-01-16 00:10:00 93.56 93.56 93.56 93.56 1
2013-01-16 00:11:00 93.57 93.57 93.57 93.57 3")
colnames(x) <- c("Date", "time", "Open", "High", "Low", "Close", "Volume")
xt <- xts(x[, 3:7], order.by = as.POSIXct(paste0(x$Date, x$time, " ")) - 0.000001)
xt5 <- to.period(xt, period = "minutes", k =5)
xt5 <- align.time(xt5, n = 300)
xt5
# xt.Open xt.High xt.Low xt.Close xt.Volume
# 2013-01-16 00:05:00 93.55 93.60 93.54 93.70 48
# 2013-01-16 00:10:00 93.56 93.56 93.55 93.56 13
# 2013-01-16 00:15:00 93.57 93.57 93.57 93.57 3