Разбор вложенных списков с помощью 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

Меня не волнует, разбираю ли я эти списки в одном и том же фрейме данных, но что у меня есть для вариантов разбора данных?

Я бы предпочел вынуть данные из списков и проанализировать их в кадре данных, который может быть "связан" с исходной записью, из которой он получен.

Заранее спасибо за помощь.

1 ответ

Решение

С @hrbmstr выше, я смог получить то, что хотел, используя unnest,

select(pbp, eventid, aoi) %>% unnest() %>% head
Другие вопросы по тегам