【问题标题】:Setting start time for to.period in R在 R 中设置 to.period 的开始时间
【发布时间】:2020-11-15 00:46:58
【问题描述】:

我有一个包含贸易数据的数据集。数据分布不均(交易随机发生)。我想使用 to.minutes10 将数据转换为 10 分钟增量。有没有办法让生成的数据按小时开始?目前,R 只是使用第一个观察作为起点,然后从那里取 10 个增量。我想从 07:00 开始,然后在 07:10、07:20 等下一个。看起来很明显应该有一个选项,但我找不到。

提前谢谢你。

编辑:我已将原始问题更改为仅处理一个数据集,因为我发现我的问题模棱两可。我不想合并数据集。我只是想比较一下,让它们都在 07:00 开始。

【问题讨论】:

  • 一种方法是以您需要的格式创建日期时间数据框,然后合并所有数据框。

标签: r xts


【解决方案1】:

您的问题听起来像您想在周期的开始对齐。这可能很危险,因为它会为您的数据提供一个实际发生之前 的时间戳。这可能会引入前瞻性偏差,具体取决于您对数据的处理方式。

您可以使用align.time() 将索引更改为下一个周期的开头。

例如:

x <- .xts(1:10, sort(1595862429+runif(10, 100, 3600)))
head(m <- to.minutes10(x), 2)
##                     x.Open x.High x.Low x.Close
## 2020-07-27 10:17:56      1      3     1       3
## 2020-07-27 10:25:45      4      5     4       5
head(a <- align.time(m, 60*10), 2)
##                     x.Open x.High x.Low x.Close
## 2020-07-27 10:20:00      1      3     1       3
## 2020-07-27 10:30:00      4      5     4       5

【讨论】:

  • 您能否详细说明前瞻性偏见?这如何使时间戳和实际交易的时间错位?
  • @coolhand:如果您将10:17:56 更改为10:10:00,这意味着您的数据表明在 10:10:00,您知道未来 8 分钟会发生什么。了解未来使预测变得容易得多。 :)
【解决方案2】:

您可以使用来自 lubridate 的floor_date 来实现此目的。只需将单位设置为您需要的单位即可。

index(my_xts) <- lubridate::floor_date(index(my_xts), unit = "10 mins")

【讨论】:

  • 这就是你想要的,但是当你对当前周期开始的周期内发生的数据加时间戳时,你应该非常小心。最好在 下一个 周期的开头加上时间戳。
【解决方案3】:

这是其中一种方式,虽然有点冗长,不涉及xts。

dates <- data.frame(Date= seq(as.POSIXct("2020-07-25 07:00:00"), as.POSIXct("2020-07-25 14:00:00"), by= "10 mins"))

df1 <- data.frame(Date= seq(as.POSIXct("2020-07-25 08:00:00"), as.POSIXct("2020-07-25 12:00:00"), by= "10 mins"), Trade1= 1:25)

df2 <- data.frame(Date= seq(as.POSIXct("2020-07-25 10:00:00"), as.POSIXct("2020-07-25 12:00:00"), by= "10 mins"), Trade2= 101:113)

df <- merge.data.frame(df1, merge.data.frame(dates, df1, by.x= "Date", by.y= "Date", all.x= TRUE), by.x= "Date", by.y= "Date", all.x= TRUE)

【讨论】:

  • 谢谢。看到我的问题模棱两可:-)对不起!我只想知道我是否可以在特定点启动一个数据集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多