我正在尝试使用PROXISct在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结构是日 - 月 - 年,你建议交换日和月,我做了同样的事情并得到了预期的结果但是在头脑中它很好但是当我在寻找尾巴时,我发现它有一些问题。尾巴是
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 :(得分: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"