将JSON URL转换为R数据框

时间:2016-01-31 22:11:58

标签: json r dataframe

我在将JSON文件(从API)转换为R中的数据框时遇到问题。例如,网址http://api.fantasy.nfl.com/v1/players/stats?statType=seasonStats&season=2010&week=1&format=json

我已尝试过S / O的一些不同建议,包括 convert json data to data frame in R以及各种博文,例如http://zevross.com/blog/2015/02/12/using-r-to-download-and-parse-json-an-example-using-data-from-an-open-data-portal/

我最接近的是使用下面的代码,它为我提供了一个包含4行和34行的大型矩阵"和一堆" varables" (V1,V2等)。我假设这个JSON文件的格式与" normal"不同。那些。

library(RJSONIO)

raw_data <- getURL("http://api.fantasy.nfl.com/v1/players/stats?statType=seasonStats&season=2010&week=1&format=json")

data <- fromJSON(raw_data)

final_data <- do.call(rbind, data)

我非常不知道如何让它工作,所以任何R包/流程都是受欢迎的。提前致谢。

4 个答案:

答案 0 :(得分:4)

library(jsonlite) mydata <- fromJSON("http://api.fantasy.nfl.com/v1/players/stats?statType=seasonStats&season=2010&week=1&format=json") names(mydata$players) # [1] "id" "esbid" "gsisPlayerId" "name" # [5] "position" "teamAbbr" "stats" "seasonPts" # [9] "seasonProjectedPts" "weekPts" "weekProjectedPts" head(mydata$players) # id esbid gsisPlayerId name position teamAbbr stats.1 # 1 100029 FALSE FALSE San Francisco 49ers DEF SF 16 # 2 729 ABD660476 00-0025940 Husain Abdullah DB KC 15 # 3 2504171 ABR073003 00-0019546 John Abraham LB 15 # 4 2507266 ADA509576 00-0025668 Michael Adams DB 13 # 5 2505708 ADA515576 00-0022247 Mike Adams DB IND 15 # 6 1037889 ADA534252 00-0027610 Phillip Adams DB ATL 11 包自动获取数据帧:

simplify

您可以使用jsonlite::fromJSON()中的matplotlib参数来控制它。

答案 1 :(得分:3)

没有什么&#34;异常&#34;关于这个JSON,它只是一个矩形结构,非常适合数据框。 JSON可以代表更丰富的数据结构。

例如(使用rjson套餐,您还没有说出您使用过的内容):

> data = rjson::fromJSON(file="http://api.fantasy.nfl.com/v1/players/stats?statType=seasonStats&season=2010&week=1&format=json")
> length(data[[4]][[10]]$stats)
[1] 14
> length(data[[4]][[1]]$stats)
[1] 21

data[[1 to 3]]看起来像标题)

&#34;统计数据&#34; data[[4]]的第10个元素有14个元素,&#34; stats&#34; 21.第一个是如何适应矩形数据框架? R已将其存储在列表中,因为这是R存储不规则数据结构的最佳方式。

除非您可以定义将不规则数据映射到矩形数据框的方法,否则无法将其存储在数据框中。你了解数据的结构吗?这是必不可少的。

答案 2 :(得分:0)

RJson和Jsonlite有类似的命令,比如fromJSON,但根据你加载它们的顺序,它们会相互覆盖。为了我的目的,rJson构造数据比JsonLite好得多,所以我确保加载正确的顺序/只加载Rjson

答案 3 :(得分:0)

jsonlite已加载

library(jsonlite)

quandl_url的定义

quandl_url <- "https://www.quandl.com/api/v3/datasets/WIKI/FB/data.json?auth_token=i83asDsiWUUyfoypkgMz"

导入Quandl数据:

quandl_data <- fromJSON(quandl_url)

列表类型中的quandl_data

quandl_data