0

我想将具有该类的 xts 对象转换Date为 JSON,jsonlite::toJSON但它返回一个错误说No method asJSON S3 class: zoo

我的目标是拥有一个可以由 highcharts.js 库处理的 JSON 文件,所以我试图拥有几个数组[unixtime, value],如下所示:

[[1489363200, -0.01766174], [1489968000, 0.00000021], [1490572800, 0.00000098]]

这是我的 xts 对象:

> obj
             values
2017-03-13 -0.01766174
2017-03-20  0.00000021
2017-03-27  0.00000098

toJSON提及用于编码 Date 对象的选项的文档Date:必须是“ISO8601”或“epoch”之一,但由于某种原因存在相同的错误。

> data <- toJSON(obj, dataframe = "values", Date="epoch")
Error: No method asJSON S3 class: zoo

如果我将 xts 转换为数据框或矩阵,我可以导出为 JSON,但该格式不适合 highcharts.js :

[-0.0177,"2017-03-13"],[0,"2017-03-20"],[0,"2017-03-27"]]

是否有可能通过保持时间序列以 JSON 格式导出 xts 对象?

谢谢,

4

1 回答 1

1

一种方法是手动进行。主要步骤是:

  1. 将 xts 转换为数据框对象
  2. datetime_to_timestamp然后使用来自highcharter包的日期对象转换为数字。
  3. toJSON的使用,


library(xts)
library(highcharter)
library(jsonlite)
data(sample_matrix)

obj <- as.xts(head(sample_matrix[, 1], 3), descr = "my new xts object")
obj
#>                [,1]
#> 2007-01-02 50.03978
#> 2007-01-03 50.23050
#> 2007-01-04 50.42096

df <- data.frame(time = time(obj), values = as.vector(obj))
df
#>         time   values
#> 1 2007-01-02 50.03978
#> 2 2007-01-03 50.23050
#> 3 2007-01-04 50.42096

df$time <- datetime_to_timestamp(df$time)
df
#>           time   values
#> 1 1.167707e+12 50.03978
#> 2 1.167793e+12 50.23050
#> 3 1.167880e+12 50.42096

toJSON(as.matrix(df))
#> [[1167706800000,50.0398],[1167793200000,50.2305],[1167879600000,50.421]]
于 2017-03-30T14:45:25.550 回答