0

R からハイチャートにデータをグラフ化するのが好きです。私のデータフレームは次のようになります。

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")

次のように、この df を json 形式に変換しています。

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

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,
}

[[date, value],[date,value],[date,value]] のような 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でこれを行うにはどうすればよいですか?

4

1 に答える 1

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 ] 
]

問題の HighCharts 側に関するアドバイスについては、この SO Q&A をご覧ください。

ハイチャートの JSON 読み込みの問題

(R-POSIXct オブジェクトの基本的な表現は「double」であるため、日時を文字に変換する必要がありました。)

で区切られた値が必要な場合は" : "、これを試すことができると思いますが、満足のいくものではないと思います。

> 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" 
]
于 2013-06-07T14:51:50.243 に答える