我在将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包/流程都是受欢迎的。提前致谢。
答案 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)
library(jsonlite)
quandl_url <- "https://www.quandl.com/api/v3/datasets/WIKI/FB/data.json?auth_token=i83asDsiWUUyfoypkgMz"
quandl_data <- fromJSON(quandl_url)
quandl_data