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]]
- 这将访问您要查找的第一个列出的对象
所以我正在尝试清理 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]]
- 这将访问您要查找的第一个列出的对象