R语言如何从JSON文件提取指定字段数据并存储为变量
R语言使用jsonlite提取嵌套JSON指定值方案
前置准备
- 首先安装并加载jsonlite包:
# 未安装先执行安装 install.packages("jsonlite") # 加载包 library(jsonlite)
步骤1:解析JSON数据
根据你的数据来源选择对应解析方式:
- 读取本地JSON文件:
json_data <- fromJSON("你的JSON文件路径.json")
- 解析示例JSON字符串:
json_str <- '{"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}]}]}' json_data <- fromJSON(json_str)
步骤2:提取1962年人口数值
基础R写法(无额外依赖)
# 提取逻辑:取出populationCounts嵌套表→筛选year=1962的行→取value字段值 pop_1962 <- json_data$data$populationCounts[[1]][json_data$data$populationCounts[[1]]$year == 1962, "value"]
执行后变量pop_1962存储的就是目标值97334442。
易读性更高的dplyr写法(可选)
习惯tidyverse语法可以用dplyr过滤:
library(dplyr) pop_df <- json_data$data$populationCounts[[1]] pop_1962 <- pop_df %>% filter(year == 1962) %>% pull(value)
常见失败原因说明
之前直接用$选择器失败,大多是忽略了两层嵌套数组结构:
- 根节点下的
data是数组,解析后为R的列表,需要先取对应国家的下标才能访问下级字段 populationCounts同样是数组结构,解析后为列表列,需要用[[1]]取出内部数据框再做筛选
内容的提问来源于stack exchange,提问作者Coding Man
相关产品推荐
相关产品推荐

