如何将通过climatetrace API下载的JSON数据转为R数据框?
将Climate Trace API的JSON数据转换为R数据框
我通过Climate Trace的API获取了JSON格式数据,使用的R代码如下:
url <- "https://api.climatetrace.org/v6/assets/emissions" req <- request(url) resp <- req |> req_url_query(countries = "USA") |> req_perform() resp |> resp_body_json() %>% glimpse()
请问如何将下载的JSON数据转换为数据框?我尝试了以下代码,但尚未成功转换为数据框:
resp |> resp_body_json() |> pluck('assets') |> glimpse()
解决方案
你已经正确定位到了JSON中的assets数组(核心数据所在部分),只需将这个列表结构转换为数据框即可,推荐使用dplyr::bind_rows()或purrr::map_dfr()完成转换:
library(httr2) library(dplyr) library(purrr) # 完整流程代码 url <- "https://api.climatetrace.org/v6/assets/emissions" req <- request(url) resp <- req |> req_url_query(countries = "USA") |> req_perform() # 转换为数据框 asset_dataframe <- resp |> resp_body_json() |> pluck("assets") |> bind_rows() # 也可以用 map_dfr(~.) 实现相同效果 # 查看转换后的数据框结构 glimpse(asset_dataframe)
补充说明
pluck("assets")提取出的是由多个子列表/数据框组成的列表,bind_rows()会自动将这些子元素合并为标准数据框,缺失字段会自动填充NA。- 如果数据中存在嵌套JSON结构(比如某个字段包含子列表),可以使用
tidyr::unnest()进一步展开:
library(tidyr) # 展开指定嵌套字段示例 expanded_df <- asset_dataframe |> unnest(cols = c(your_nested_field), keep_empty = TRUE)
内容的提问来源于stack exchange,提问作者OJH
相关产品推荐
相关产品推荐

