jsonliteというパッケージがよく使われているようです。

install.packages('jsonlite')
library(jsonlite)

試しに、この前使ったドル円のデータを読み込んでみます。

json <- fromJSON("path/to/candles.json")
candles <- json$candles

オブジェクトの配列みたいな形のJSONを、きちんとデータフレームに変換してくれています。親切。

読み込むだけ読み込んで終わりなのも寂しいので、適当に分析してみました。

candles$time <- as.numeric(candles$time)
candles$midBid <- (candles$highBid + candles$lowBid) / 2
meanMidBid <- mean(candles$midBid)
candles$normMidBid <- candles$midBid - meanMidBid
sdMidBid <- sd(candles$normMidBid)
candles$normMidBid <- candles$normMidBid / sdMidBid

上のコードでは、一時間足のBidの平均値(のようなもの)を、平均が0、分散が1になるように正規化したものを作っています。

とりあえずグラフとして表示してみます。

library(ggplot2)
gp <- ggplot(aes(x=time, y=normMidBid), data=candles)
gp + ggtitle('normalized bid') + geom_line()

/img/post/2017-07-19-r-json-candle.png

よくあるFXっぽい感じのグラフが出てきました。

ヒストグラムも表示してみます。

gp <- ggplot(aes(x=normMidBid), data=candles)
gp + ggtitle('histogram') + geom_histogram(binwidth=0.2)

/img/post/2017-07-19-r-json-candle.png

正規分布とかみたいなわかりやすい分布になっているわけではなさそうです。残念。