使用 R 和 jsonlite 遍历 JSON 个元素来修复缺失值
Iterating through JSON elements to fix missing values using R and jsonlite
我正在处理一个 JSON 文件并尝试使用 jsonlite
包将其扁平化为 data.frame
。
数组中的主要对象集没有键,因此不是展平成行,而是为每个对象(及其键值对)创建一列。
如何遍历 JSON 对象以向每个对象值添加一个键,以便我可以将此数据视为可读 data.frame
?
这是我正在使用的代码:
jsonfile <- jsonlite::fromJSON("filename"), simplifyDataFrame=TRUE)
所以这个:
{
"SUCCESS ACADEMY": {
"districtName": "SUCCESS SD",
"isPublic": true
},
"FAILURE ACADEMY": {
"districtName": "FAIL SD",
"isPublic": true
}
}
变成这样:
+------------------------------+--------------------------+------------------------------+--------------------------+
| SUCCESS ACADEMY.districtName | SUCCESS ACADEMY.isPublic | Failure Academy.districtName | Failure Academy.isPublic |
+------------------------------+--------------------------+------------------------------+--------------------------+
当我想要这个时:
+-----------------+--------------+----------+
| School Name | districtName | isPublic |
+-----------------+--------------+----------+
| SUCCESS ACADEMY | SUCCESS SD | true |
| FAILURE ACADEMY | FAIL SD | true |
+-----------------+--------------+----------+
可能有一种直接的方法,但将其视为数据帧列表,然后将它们绑定在一起似乎就足够了:
library(data.table)
library(magrittr)
jsonlite::fromJSON(txt= '{
"SUCCESS ACADEMY": {
"districtName": "SUCCESS SD",
"isPublic": true
},
"FAILURE ACADEMY": {
"districtName": "FAIL SD",
"isPublic": true
}
}') %>%
lapply(as.data.table) %>%
rbindlist(idcol = "School_name")
我正在处理一个 JSON 文件并尝试使用 jsonlite
包将其扁平化为 data.frame
。
数组中的主要对象集没有键,因此不是展平成行,而是为每个对象(及其键值对)创建一列。
如何遍历 JSON 对象以向每个对象值添加一个键,以便我可以将此数据视为可读 data.frame
?
这是我正在使用的代码:
jsonfile <- jsonlite::fromJSON("filename"), simplifyDataFrame=TRUE)
所以这个:
{
"SUCCESS ACADEMY": {
"districtName": "SUCCESS SD",
"isPublic": true
},
"FAILURE ACADEMY": {
"districtName": "FAIL SD",
"isPublic": true
}
}
变成这样:
+------------------------------+--------------------------+------------------------------+--------------------------+
| SUCCESS ACADEMY.districtName | SUCCESS ACADEMY.isPublic | Failure Academy.districtName | Failure Academy.isPublic |
+------------------------------+--------------------------+------------------------------+--------------------------+
当我想要这个时:
+-----------------+--------------+----------+
| School Name | districtName | isPublic |
+-----------------+--------------+----------+
| SUCCESS ACADEMY | SUCCESS SD | true |
| FAILURE ACADEMY | FAIL SD | true |
+-----------------+--------------+----------+
可能有一种直接的方法,但将其视为数据帧列表,然后将它们绑定在一起似乎就足够了:
library(data.table)
library(magrittr)
jsonlite::fromJSON(txt= '{
"SUCCESS ACADEMY": {
"districtName": "SUCCESS SD",
"isPublic": true
},
"FAILURE ACADEMY": {
"districtName": "FAIL SD",
"isPublic": true
}
}') %>%
lapply(as.data.table) %>%
rbindlist(idcol = "School_name")