2013-06-07 3 views
0

Мне нравится отображать данные из R в highcharts. Мой кадр данных выглядит следующим образом:как преобразовать фрейм данных в формат json, который понимает hightcharts

dput(head(df,10)) 
structure(list(DATE = structure(c(1362027751, 1362027781, 1362027811, 
1362027841, 1362027871, 1362027901, 1362027931, 1362027961, 1362027991, 
1362028021), class = c("POSIXct", "POSIXt")), CPU = c(66L, 72L, 
69L, 72L, 69L, 68L, 71L, 73L, 63L, 57L)), .Names = c("DATE", 
"CPU"), row.names = c(NA, 10L), class = "data.frame") 

Я преобразование этого ФР в формат JSON следующим образом:

ll <- as.list(setNames(df$CPU,df$DATE)) 
library(RJSONIO) 
data<-toJSON(ll) 
cat(data, file="data.json") 

, когда я смотрю на Teh файл data.json, это выглядит примерно так:

{ 
"2013-02-28 00:02:31": 66, 
"2013-02-28 00:03:01": 72, 
"2013-02-28 00:03:31": 69, 
"2013-02-28 00:04:01": 72, 
"2013-02-28 00:04:31": 69, 
"2013-02-28 00:05:01": 68, 
"2013-02-28 00:05:31": 71, 
"2013-02-28 00:06:01": 73, 
} 

мне нужен мой файл data.json в выглядит следующим образом: [[дата, значение], [дата, значение], [дата, значение]]

[ 

    ["2013-02-28 00:02:31": 66], 
    ["2013-02-28 00:03:01": 72], 
    ["2013-02-28 00:03:31": 69], 
    ["2013-02-28 00:04:01": 72] 
    ] 

Как бы это сделать в R?

ответ

1

Я не думаю, что вы хотите именно этот выход. Я думаю, что вы хотите иметь значение даты и в отдельном/но столбцах с координатами:

> ll <- list(as.character(df$DATE), df$CPU) 
> data2<-toJSON(ll) 
> cat(data2) # You will want to add a 'file=' argument 
[ 
[ "2013-02-27 21:02:31", "2013-02-27 21:03:01", "2013-02-27 21:03:31", "2013-02-27 21:04:01", "2013-02-27 21:04:31", "2013-02-27 21:05:01", "2013-02-27 21:05:31", "2013-02-27 21:06:01", "2013-02-27 21:06:31", "2013-02-27 21:07:01" ], 
[ 66, 72, 69, 72, 69, 68, 71, 73, 63, 57 ] 
] 

Взгляните на этом SO Q & А за совет о Highcharts стороне проблемы:

Highcharts JSON load issue

(дата-время, необходимое для преобразования в символ с подстилающим представления объектов R-POSIXct как «двойной».)

Если вы хотите иметь значение, разделенное " : ", я полагаю, вы могли бы попробовать это, но я думаю, что это не окажется удовлетворительным:

> ll <- as.list(paste(df$DATE, df$CPU, sep=" : ")) 
> data2<-toJSON(ll) 
> cat(data2) 
[ 
"2013-02-27 21:02:31 : 66", 
"2013-02-27 21:03:01 : 72", 
"2013-02-27 21:03:31 : 69", 
"2013-02-27 21:04:01 : 72", 
"2013-02-27 21:04:31 : 69", 
"2013-02-27 21:05:01 : 68", 
"2013-02-27 21:05:31 : 71", 
"2013-02-27 21:06:01 : 73", 
"2013-02-27 21:06:31 : 63", 
"2013-02-27 21:07:01 : 57" 
] 
+0

Я играл вокруг с Highcharts, и я думаю, что формат JSON должен быть. Я был в состоянии заставить его работать с этим форматом: [ [1369540800000,12], [1379540800000,5], [1389540800000,18], [1389540800000,13] ] – user1471980

+0

если вы знакомы с Highcharts, как бы вы разделили данные json, чтобы показать дату в yaxis, cpu на xaxis и возможно больше данных, таких как память и т. д.? Я немного озадачен. – user1471980

+0

Я не знаком с HighCharts. Существует тэг SO highcharts. –

Смежные вопросы