【问题标题】:R : Tick data adding value when tick data is missingR : 当刻度数据丢失时刻度数据增加值
【发布时间】:2012-07-25 01:52:07
【问题描述】:

我正在处理刻度数据,并希望将我的 xts 不规则间隔系列聚合成一个 1 秒的同质系列。因此我使用 xts 包函数 to.period :

price_1m <-to.period(price,period="seconds",k=1,OHLC=FALSE)

这是我得到的:

2010-02-02 08:00:03 2787
2010-02-02 08:00:04 2786
2010-02-02 08:00:05 2787
2010-02-02 08:00:06 2787
2010-02-02 08:00:07 2786
2010-02-02 08:00:08 2786
2010-02-02 08:00:09 2786
2010-02-02 08:00:10 2787
2010-02-02 08:00:11 2786
2010-02-02 08:00:14 2786
2010-02-02 08:00:16 2786
2010-02-02 08:00:18 2787

我的系列已汇总,但例如在 08:00:13 和 08:00:15 时缺少刻度数据。我想要的是用以前的分时数据填充这些空白,因为知道逐个分时 xts 系列中缺少 08:00:13 和 08:00:15 的价格。 有什么想法吗?

谢谢

【问题讨论】:

  • 您可以尝试从第一个时间点开始的 for 循环,以检查数据点是否存在,否则插入该点。不过可能有比这更快的方法

标签: r time-series xts


【解决方案1】:

您可以将price_1m 与一个“空” xts 对象合并,该对象包含一个您想要的具有规则间隔的索引,在上面使用na.locf。例如:

onemin <- seq(start(price_1m),end(price_1m),by="1 s")
Price_1m <- na.locf(merge(price_1m, xts(,onemin)))

【讨论】:

  • 太好了,非常感谢!您认为这是获得定期间隔时间序列的好方法吗?
  • @user1474263:是的。如果我认为这不是一个好的解决方案,我不会回答。 ;-)
  • @user1474263 这与我在stackoverflow.com/a/11660324/841830 的回答之间的区别在于,我想要整个交易时段的 100 万根柱线,而且在交易时段的开始和结束时经常会出现缺口。另一个区别是,在这个阶段,我将它们保留为 NA 条,而不是使用 na.locf(如果您有 OHLCV 条,它不会为您提供有意义的数据)。
  • @达伦库克:感谢您的回答。我没有看到您添加了 seq.exclude_final_period.POSIXt. 的定义。非常感谢您的回答。顺便问一下,除了 xts 和 RTAQ,你还知道哪些有趣的 R 包适合高频数据分析和建模吗?
【解决方案2】:

我的qmao package 中的MakeStrictlyRegular 函数将为您执行此操作。

这是来自?MakeStrictlyRegular的示例

x <- align.time(.xts(1:1000, 60*1:1000))[-c(2, 4, 7, 8), ] # remove some rows at the begining
head(x[paste((start.x <- start(x)), "/")])
#                    [,1]
#1969-12-31 18:02:00    1
#1969-12-31 18:04:00    3
#1969-12-31 18:06:00    5
#1969-12-31 18:07:00    6
#1969-12-31 18:10:00    9
#1969-12-31 18:11:00   10
x2 <- MakeStrictlyRegular(x)
#added 4 (0.40%); There are now 1000 total rows.
head(x2[paste(start.x, "/")])
#                    [,1]
#1969-12-31 18:02:00    1
#1969-12-31 18:03:00    1
#1969-12-31 18:04:00    3
#1969-12-31 18:05:00    3
#1969-12-31 18:06:00    5
#1969-12-31 18:07:00    6

对于您的 1 秒数据,您可以使用 by="sec"。所以,像

MakeStrictlyRegular(price, by="sec")

【讨论】:

  • qmao 不会安装:install.packages("qmao", repos="r-forge.r-project.org") 警告消息:包 'qmao' 不可用(对于 R 版本 2.15.2)
  • @EnricoDetoma,我在github有镜像,你可以用library(devtools); install_github("qmao", "gsee")安装。如果这不起作用(可能是因为您在 Windows 上),因为 qmao 没有编译代码,您可以下载 zip 文件,将其解压缩到您的工作目录并使用 install.packages 和 @ 987654331@ 和type="source"。有关安装无法构建的 R-Forge 包的更通用方法,请参阅stackoverflow.com/questions/11105131/…
猜你喜欢
  • 2022-06-13
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2012-12-03
相关资源
最近更新 更多