Это второй раз, когда я столкнулся с этим недавно, поэтому я хотел бы узнать, есть ли лучший способ проанализировать данные, возвращаемые с jsonlite
, когда один из элементов - это массив, хранящийся как столбец в кадре данных в виде списка.Вложенный список с использованием jsonlite
Я знаю, что эта часть власти с 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
Я действительно не волнует, если я анализирую эти списки в том же dataframe, но что я для вариантов разобрать данные?
Я бы предпочел извлечь данные из списков и проанализировать их в виде данных, которые могут быть «связаны» с исходной записью, из которой она была получена.
Заранее за вашу помощь.
Возможно, вы играете с 'purrr :: unsest', можете ли вы получить то, что вам нужно? – hrbrmstr
Вы были на месте. Это зависит от того, что мне нужно делать. 'select (pbp, eventid, aoi)%>% unsest()%>% head'. Спасибо за отзыв, я не знал об этом пакете/функции. – Btibert3
Я не вижу 'disest' в purrr. Возможно, вы имели в виду pkg: tidyr? –