润滑不匹配的索引类别

Lit*_*ode 3 r lubridate

在开始之前,我想声明我已经在https://tsibble.tidyverts.org/articles/faq.html上看到了常见问题解答条目,但是我仍然无法找到可行的解决方案。

我正在使用 Polygon.io 的“聚合(条形)”输出(https://polygon.io/docs/get_v2_aggs_ticker__forexTicker__range__multiplier___timespan___from___to__anchor

由于许可/版权限制,我无法在此处发布数据,但如果您转到上面的文档链接,他们那里有一个示例(无需登录)。

Polygon.io 提供时间戳如下:

t 整数 聚合窗口开始的 Unix 毫秒时间戳。

到目前为止我的尝试如下:

library(fpp3)
library(fable.prophet)
library(jsonlite)
library(curl)
library(tidyverse)
library(lubridate)

myURL <-  # *N.B. For sample data please see doc link in SO question*
myData <- fromJSON(myURL)
myData$ticker

myData$results

parse1 <- myData$results %>% select(t,c) %>% 
  mutate(dt = as_datetime(t/1000),.keep="unused",.before=1)

print(head(parse1))

parse2 <- as_tsibble(parse1,index=dt)
Run Code Online (Sandbox Code Playgroud)

然而这会产生:

Error: Can't obtain the interval due to the mismatched index class.
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

regular该问题似乎与“dt”列的间隔有关Datetime。我们可以将它转换为Date类并且as.Date它可以工作

\n
library(dplyr)\nlibrary(tsibble)\nparse1 %>%\n      mutate(dt = as.Date(dt)) %>%\n       as_tsibble(index = dt)\n
Run Code Online (Sandbox Code Playgroud)\n

-输出

\n
# A tsibble: 120 x 2 [1D]\n   dt             c\n   <date>     <dbl>\n 1 2021-01-03  1.22\n 2 2021-01-04  1.23\n 3 2021-01-05  1.23\n 4 2021-01-06  1.23\n 5 2021-01-07  1.23\n 6 2021-01-08  1.22\n 7 2021-01-09  1.22\n 8 2021-01-10  1.22\n 9 2021-01-11  1.22\n10 2021-01-12  1.22\n# \xe2\x80\xa6 with 110 more rows\n
Run Code Online (Sandbox Code Playgroud)\n
\n

能够在OP的帖子中复制相同的错误

\n
as_tsibble(parse1,index=dt)\nError: Can't obtain the interval due to the mismatched index class.\n\xe2\x84\xb9 Please see `vignette("FAQ")` for details.\nRun `rlang::last_error()` to see where the error occurred.\n
Run Code Online (Sandbox Code Playgroud)\n

问题在于这段代码as_tsibble

\n
...\n  if (unknown_interval(interval) && (nrows > vec_size(key_data))) {\n    abort(c(\n      "Can't obtain the interval due to the mismatched index class.",\n      i = "Please see `vignette(\\"FAQ\\")` for details."\n    ))\n  }\n...\n
Run Code Online (Sandbox Code Playgroud)\n

有一个参数来指定是否intervalregular。默认情况下,它是TRUE. 这里,间隔是不规则的。所以,我们需要

\n
as_tsibble(parse1,index=dt)\nError: Can't obtain the interval due to the mismatched index class.\n\xe2\x84\xb9 Please see `vignette("FAQ")` for details.\nRun `rlang::last_error()` to see where the error occurred.\n
Run Code Online (Sandbox Code Playgroud)\n

因此,regularFALSE

\n
as_tsibble(parse1,index=dt, regular = FALSE)\n# A tsibble: 120 x 2 [!] <GMT>\n   dt                      c\n   <dttm>              <dbl>\n 1 2021-01-03 00:00:00  1.22\n 2 2021-01-04 00:00:00  1.23\n 3 2021-01-05 00:00:00  1.23\n 4 2021-01-06 00:00:00  1.23\n 5 2021-01-07 00:00:00  1.23\n 6 2021-01-08 00:00:00  1.22\n 7 2021-01-09 00:00:00  1.22\n 8 2021-01-10 00:00:00  1.22\n 9 2021-01-11 00:00:00  1.22\n10 2021-01-12 00:00:00  1.22\n# \xe2\x80\xa6 with 110 more rows\n
Run Code Online (Sandbox Code Playgroud)\n