2014-02-17 64 views
1

我试图在R中使用PROXISct将1分钟数据转换为5分钟。但我无法将其转换。 我的数据是这种格式。使用R将1分钟数据转换为5分钟

 Date Time Price Volume No.of.trades 
1 01-06-2012 09:15 4901.895 283550   1286 
2 01-06-2012 09:16 4907.046 140000   831 
3 01-06-2012 09:17 4904.140 96900   639 
4 01-06-2012 09:18 4900.609 84350   553 
5 01-06-2012 09:19 4900.067 76450   516 
6 01-06-2012 09:20 4898.378 84900   551 

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
       format="%d-%m-%Y %H:%M", tz="UTC") 
cable <- xts(x[,3:5], order.by=dt_tm) 

        Price Volume No.of.trades  
2012-01-07 09:15:00 6054.890 139750   787 
2012-01-07 09:16:00 6051.176 56550   335 
2012-01-07 09:17:00 6045.232 127400   691 
2012-01-07 09:18:00 6039.950 59950   374 
2012-01-07 09:19:00 6042.292 55450   214 
2012-01-07 09:20:00 6044.140 53600   246 

经过这一步后,我得到了一个不同的类型系列,这不在我的数据中。 此外,我要使用此代码到我的数据转换为5分钟,

colnames(cable)[1] <- "CLOSE" 
trades5 <-to.minutes5(cable, indexAt='startof', name=NULL) 

请纠正我哪里做错了,并建议我,如果有这种类型的数据转换成5的任何其他方式分钟。

我仍然面临与data.date结构有关的问题,我的数据是日 - 月 - 年,你已经建议交换一天和几个月,我做了同样的事情,得到期望的结果,但在头部它是好的但是,当我寻找的尾巴,我发现在it.initally尾部有些问题是

Date  Time  Price  Volume No.of.trades 
91561 31-05-2013 15:25 6004.504 86550   622 
91562 31-05-2013 15:26 6003.709 117750   651 
91563 31-05-2013 15:27 6000.656 160950   856 
91564 31-05-2013 15:28 5997.516 215950   1191 
91565 31-05-2013 15:29 5995.305 303200   1784 

现在用下面的代码

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
    format="%m-%d-%Y %H:%M", tz="UTC") 
ct <- cut(dt_tm, breaks="5 mins") 
ct_tm <- as.POSIXct(as.character(ct)) 
cable <- xts(x[,3:5], order.by=ct_tm) 
head(cable) 
        Price   Volume   No.of.trades 
2012-01-06 09:15:00 4901.895  283550   1286 
2012-01-06 09:15:00 4907.046  140000   831 
2012-01-06 09:15:00 4904.140  96900   639 
2012-01-06 09:15:00 4900.609  84350   553 
2012-01-06 09:15:00 4900.067  76450   516 
2012-01-06 09:20:00 4898.378  84900   551 

,但是当我寻找尾巴 尾(电缆)

 Price   Volume   No.of.trades 
<NA> 6004.504   86550   622 
<NA> 6003.709   117750   651 
<NA> 6000.656   160950   856 
<NA> 5997.516   215950   1191 
<NA> 5995.305   303200   1784 
<NA> 5991.419   550   8 

请帮助我,现在我错了。

+0

日期的格式化必须是不正确的 - 也就是说,如果你会解析'2007-31-01'为'年 - 那么可以,但将其解析为“年 - 月 - 日”将产生“NA”值。我想这就是发生在这里的事情 - 在某个地方你正试图解析值为“禁止”的值。尝试不同的格式,如果问题仍然存在 – Zbynek

回答

1

我想你可能会错误地格式化你的数据 - 交换日期和月份。

dt_tm <- as.POSIXct(paste(x[,1], x[,2]), 
      format="%m-%d-%Y %H:%M", tz="UTC") 

转换到5分钟的数据帧可以这样实现:

# cut dt_tm to 5 minutes intervals 
ct <- cut(dt_tm, breaks="5 mins") 
# convert to POSIXct 
ct_tm <- as.POSIXct(as.character(ct)) 
# aggregate 
cable <- xts(x[,3:5], order.by=ct_tm) 

        Time Price  Volume 
2012-01-06 09:15:00 "09:15" "4901.895" "283550" 
2012-01-06 09:15:00 "09:16" "4907.046" "140000" 
2012-01-06 09:15:00 "09:17" "4904.140" " 96900" 
2012-01-06 09:15:00 "09:18" "4900.609" " 84350" 
2012-01-06 09:15:00 "09:19" "4900.067" " 76450" 
2012-01-06 09:20:00 "09:20" "4898.378" " 84900" 
+0

非常感谢你Zbynek – Bhavana

+0

你可以编辑你的问题吗?这是相当难以阅读 – Zbynek

+0

不要问新的问题,编辑这一个 – Zbynek