jsonlite
最近これに直面したのは 2 回目なので、要素の 1 つがデータフレームの列としてリストとして格納されている配列である場合に 返されるデータフレームを解析するより良い方法があるかどうかを確認するために連絡を取りたいと思いました。
この部分が で機能することはわかっていますjsonlite
が、このネストされた構造をどのように扱うかはわかりません。最終的には、独自のカスタム構文解析を作成できると思いますが、ほぼ完成したので、このデータを操作する方法を知りたいと思いました。
例えば:
## options
options(stringsAsFactors=F)
## packages
library(httr)
library(jsonlite)
## setup
gameid="2015020759"
SEASON = '20152016'
BASE = "http://live.nhl.com/GameData/"
URL = paste0(BASE, SEASON, "/", gameid, "/PlayByPlay.json")
## get the data
x <- GET(URL)
## parse
api_response <- content(x, as="text")
api_response <- jsonlite::fromJSON(api_response, flatten=TRUE)
## get the data of interest
pbp <- api_response$data$game$plays$play
colnames(pbp)
そして何が戻ってくるかを探ります:
> class(pbp$aoi)
[1] "list"
> class(pbp$desc)
[1] "character"
> class(pbp$xcoord)
[1] "integer"
上から、列pbp$aoi
はリストです。ここにいくつかのエントリがあります:
> head(pbp$aoi)
[[1]]
[1] 8465009 8470638 8471695 8473419 8475792 8475902
[[2]]
[1] 8470626 8471276 8471695 8476525 8476792 8477956
[[3]]
[1] 8469619 8471695 8473492 8474625 8475727 8476525
[[4]]
[1] 8469619 8471695 8473492 8474625 8475727 8476525
[[5]]
[1] 8469619 8471695 8473492 8474625 8475727 8476525
[[6]]
[1] 8469619 8471695 8473492 8474625 8475727 8475902
これらのリストを同じデータフレームで解析するかどうかはあまり気にしませんが、データを解析するためのオプションには何がありますか?
リストからデータを取り出し、元のレコードに「関連付ける」ことができるデータフレームに解析することをお勧めします。
よろしくお願いします。