【发布时间】:2020-03-19 01:12:30
【问题描述】:
使用从 SeatGeek API 提取的 JSON 格式文件,我想将数据转换为数据框。我已经设法使用以下函数创建了一个包含所有变量 + 数据的框架:
library(httr)
library(jsonlite)
vpg <- GET("https://api.seatgeek.com/2/venues?country=US&per_page=5000&page=1&client_id=NTM2MzE3fDE1NzM4NTExMTAuNzU&client_secret=77264dfa5a0bc99095279fa7b01c223ff994437433c214c8b9a08e6de10fddd6")
vpgc <- content(vpg)
vpgcv <- (vpgc$venues)
json_file <- sapply(vpgcv, function(x) {
x[sapply(x, is.null)] <- NA
unlist(x)
as.data.frame(t(x))
})
从这一点开始,我可以使用以下方法创建数据框:
venues.dataframe <- as.data.frame(t(json_file), flatten = TRUE)
但我的结果数据是一个包含正确数量的 23 个变量和 5000 行的数据框,但每个条目都是一个列表,而不仅仅是一个值。如何从每个列表中提取值?
我还尝试使用以下代码中的数据表提取值:
library(data.table)
data.table::rbindlist(json_file, fill= TRUE)
但输出数据帧几乎沿对角线流动,每行放置 1 个存储变量 + 22 个 NULL 值。虽然所有数据都存在于此,但第 1-23 行(和 24-46 等)应该是单行。
在这两个死胡同中,哪个是生成我想要的 [5000 个观察值,以 23 个变量的简单值形式] 的数据框输出的最简单/最干净的解决方案?
【问题讨论】:
标签: r json dataframe datatable jsonlite