从json列表创建一个数据帧

时间:2017-12-18 14:11:03

标签: json r

我希望在R 的数据框中转换json中的数据。我尝试使用包data.tree,但我只得到一个只有NA ...的data.frame

library(dplyr)
library(jsonlite)
library(data.tree)
library(magrittr)
data<-fromJSON("http://ec.europa.eu/eurostat/wdds/rest/data/v2.1/json/en/nama_gdp_c?precision=1&geo=EU28&unit=EUR_HAB&time=2010&time=2011&indic_na=B1GM")
repos<-as.Node(data)
repos %>% ToDataFrameTable(valeur=function(x) x$repos$value,annee= function(x) x$repos$dimension$time$category$label)

我也试过了

repos %>% ToDataFrameTable(valeur=function(x) x$value,annee= function(x) x$dimension$time$category$label)

但这里只有两列数据为空

我直接尝试了这个

as.data.frame(valeur=data$value,annee=data$dimension$time$category$label)

但我得到了这个: “as.data.frame中的错误(valeur = data $ value,annee = data $ dimension $ time $ category $ label):缺少参数”x“,没有默认值”

如果有人知道某事......

1 个答案:

答案 0 :(得分:0)

这个怎么样?

library(rjson)
js <- fromJSON(file="http://ec.europa.eu/eurostat/wdds/rest/data/v2.1/json/en/nama_gdp_c?precision=1&geo=EU28&unit=EUR_HAB&time=2010&time=2011&indic_na=B1GM")

df <- data.frame(years=stack(js$dimension$time$category$label)$value, 
                 value=stack(js$value)$value, 
                 country=stack(js$dimension$geo$category$label)$value)
df

输出是:

  years value                       country
1  2010 24400 European Union (28 countries)
2  2011 25100 European Union (28 countries)