【问题标题】:Weird multiple columns in one column in R (fromJSON)R中的一列中有多个奇怪的列(来自JSON)
【发布时间】:2018-07-25 19:43:19
【问题描述】:
library(jsonlite) 
test <-as.dataframe(fromJSON('http://api.worldbank.org/v2/countries/all/indicators/SH.STA.ACSN?format=json')[2])
names(test)

不过,貌似列多了,比如“country”列实际上有“country.value”和“country.id”列。这很烦人,因为“country.value”似乎不存在,因此以下代码返回错误,指出该列不在数据框测试中。我只想保留 country.value。我该如何解决这个问题?和 JSON 在 R 中返回数据的方式有关系吗?

test$country.value

【问题讨论】:

  • 有一个封装了该 API 的包:library(WDI); test &lt;- WDI(indicator = 'SH.STA.ACSN')
  • 谢谢。但似乎 WDI 包自 2012 年以来没有更新数据。我想使用最新的数据并使用 json api 可能是唯一的方法。
  • 它调用 JSON API。如果设置end,则有到2015年的数据:test &lt;- WDI(indicator = 'SH.STA.ACSN', end = 2015)
  • 谢谢!有用。我仍然想了解为什么我发布的问题存在并想知道解决方案。还是像我尝试的那样清理 JSON API 数据通常过于复杂?
  • jsonlite::fromJSON 正在返回一个 data.frame,其中包含嵌套 data.frames 的列表列。你可以打开它们,但是很麻烦。

标签: json r api dataframe columnname


【解决方案1】:

扁平化对你有用吗?我不确定。

library(jsonlite) 
test <-data.frame(fromJSON('http://api.worldbank.org/v2/countries/all/indicators/SH.STA.ACSN?format=json')[2])
names(test)
test_flatten<-flatten(test)
names(test_flatten)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多