r - R 中的高效分块时间序列

标签 r forex

我正在 R 中处理大量时间序列货币对定价数据。文件大小往往为 100-300MB,我通常一次处理 3 个文件。我正在寻找一种(更)更有效的方法来考虑这些数据的 TIME 列。

我的数据开始看起来像:

  PAIR    TIME                    BID    ASK
1 USD/JPY 2012-01-02 00:00:00.307 77.023 77.055
2 USD/JPY 2012-01-02 00:00:00.493 77.030 77.049
3 USD/JPY 2012-01-02 00:00:05.003 77.030 77.050
4 USD/JPY 2012-01-02 00:00:05.005 77.023 77.056
5 USD/JPY 2012-01-02 00:00:05.006 77.024 77.056
6 USD/JPY 2012-01-02 00:00:06.008 77.023 77.056
...       ...                     ...    ...

R 可以毫无问题地理解 TIME 列。例如,

USDJPY$TIME[2] - USDJPY$TIME[1]

给出输出

Time difference of 0.1860001 secs

数据已按月组织成文件。不幸的是,这也太大了。我想按“交易周”分割定价数据

外汇交易连续多日进行,通常从周一到周五。部分交易假期会暂停交易,这些天不会有数据。交易调度的本质是这样的,如果

USDJPY$TIME[t+1] - USDJPY$TIME[t] 

...大于 12 小时,时间 t 是美元日元该周的最后一个时间指数。

我还没有找到一种可接受的方法来将数据按交易周、指数或其他方式分解。我所有的尝试最终都挂了。 USDJPY 文件包含约 1,900,000 行。

我尝试过的一种方法:

for(i in 1:(length(USDJPY$TIME)-1)){
  USDJPY.diff <- c(USDJPY.diff, USDJPY$TIME[i+1]-USDJPY$TIME[i])
}

花费的时间太长(我在完成之前就退出了)

最佳答案

我认为 data.table 应该会加快速度:

library(data.table) #1.9.5
setDT(data)
data[, DIFF := as.numeric(TIME-shift(TIME,n=1,type="lag"))]

周数计算(增量差异大于12小时)

data[, Week.num := cumsum(DIFF>12)]

关于r - R 中的高效分块时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113071/

相关文章:

r - 数据准备问题

python - 如何使用 pandas 根据自定义间隔提取时间序列的子集?

algorithmic-trading - MQL4 函数指针/函数回调解决方案

algorithmic-trading - init() 和 OnInit() 有什么区别?

python - 奇怪的 'Currency Rates source not ready' forex_python错误

r - 在向量中分配值

r - 使用基于数据/类类型的 if 语句映射

将斯堪的纳维亚字母正确读取到数据框中

r - R中函数svd()的收敛误差