R - 查询 JSON 并保存到变量

R - Query JSON and Save to Variable

所以我正在尝试清理 R 中的一些数据,我对 R 不是很熟悉。 我想做的是从 JSON 中获取一定的数据并将其存储到变量中 JSON 又大又乱, 我尝试使用 JSON Lite 并使用 $ 变量选择器,但找不到获取我需要的特定数据的方法,关于 JSON Manipulation in R[=13 的信息和资源很少=]

Screenshot of JSON

JSON 文件:

{
  "error": false,
  "msg": "all countries and population 1961 - 2018",
  "data": [
    {
      "country": "Arab World",
      "code": "ARB",
      "populationCounts": [
        {
          "year": 1960,
          "value": 92197753
        },
        {
          "year": 1961,
          "value": 94724510
        },
        {
          "year": 1962,
          "value": 97334442
        }
      ]
    }
  ]
}

假设我想将 1962 年的值收集到一个变量中,我这样做的最佳方式是什么

任何建议都会有很大的帮助

您与 jsonlite 的对线是正确的。当然,您在 R 中获得的数据结构取决于 JSON 结构本身,因此您需要花一些时间探索 R 中的对象以了解如何操作它。

假设您有一个类似于示例数据的文件,在当前路径中名为 mydata.json,您可以这样阅读它:

library(jsonlite)
library(tidyr) # comes in later

j <- fromJSON("mydata.json")

j 里有什么?

names(j)

[1] "error" "msg"   "data" 

data怎么样?

str(j$data)

'data.frame':   1 obs. of  3 variables:
 $ country         : chr "Arab World"
 $ code            : chr "ARB"
 $ populationCounts:List of 1
  ..$ :'data.frame':    3 obs. of  2 variables:
  .. ..$ year : int  1960 1961 1962
  .. ..$ value: int  92197753 94724510 97334442

所以 j$data 是一个包含 3 列的数据框。最后一个包含年份和值的是列表列。所以我们可以使用 tidyr::unnest():

j$data %>% 
  unnest(cols = c(populationCounts))

结果:

# A tibble: 3 × 4
  country    code   year    value
  <chr>      <chr> <int>    <int>
1 Arab World ARB    1960 92197753
2 Arab World ARB    1961 94724510
3 Arab World ARB    1962 97334442

您有列表中的列表, 这有时会使访问正确的数据变得棘手

分解:

Arab_1962<- myData$PopulationCounts[[1]] 
  • 这将访问您要查找的第一个列出的对象