如何在 R 中转换 JSON 中的 xts 对象?
How to convert xts object in JSON in R?
我想将具有 class Date
的 xts 对象转换为具有 jsonlite::toJSON
的 JSON 但是 returns 一个错误说 No method asJSON S3 class: zoo
。
我的 objective 是要有一个 JSON 文件,可以由 highcharts.js 库处理,所以我试图有几个数组 [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 对象?
谢谢,
一种方法是手动完成。主要步骤是:
- 将 xts 转换为数据框对象
- 然后使用 highcharter 包中的
datetime_to_timestamp
将日期对象转换为数字。
- 使用到JSON,
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]]
我想将具有 class Date
的 xts 对象转换为具有 jsonlite::toJSON
的 JSON 但是 returns 一个错误说 No method asJSON S3 class: zoo
。
我的 objective 是要有一个 JSON 文件,可以由 highcharts.js 库处理,所以我试图有几个数组 [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 对象?
谢谢,
一种方法是手动完成。主要步骤是:
- 将 xts 转换为数据框对象
- 然后使用 highcharter 包中的
datetime_to_timestamp
将日期对象转换为数字。 - 使用到JSON,
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]]