You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载到R中的JSON文件结构解析:是否视为列表?及取值找人口最多省份

关于R中加载该JSON文件的结构与数据处理方案

加载后的结构与类型说明

加载你提供的JSON后,在R中会呈现为嵌套列表(nested list):

  • 最外层是一个仅含data键的列表,data对应的值是一个包含5个元素的子列表;
  • 每个子列表对应一个省份的键值对,例如第一个子列表是list("British Columbia" = "BC", "BC" = "4.63")。

这个结构确实应当被视为列表,原因是:JSON中的对象({})在R的主流JSON解析包(如jsonlite)中默认解析为列表,且你提供的JSON中每个省份子对象的键名不统一(每个子对象的第一个键是省份全称,第二个是简称),无法直接被解析为结构规整的数据框。

访问数值并找出人口最多省份的步骤

1. 加载JSON数据

首先用jsonlite包读取JSON文件(若未安装,先运行install.packages("jsonlite")):

library(jsonlite)
# 读取本地JSON文件,替换为你的文件路径
json_data <- fromJSON("your_provinces.json")
# 或者直接读取JSON字符串(如果数据在R环境中)
json_str <- '{
    "data":[
        {"British Columbia":"BC","BC":"4.63"},
        {"Alberta":"AB","AB":"4.15"},
        {"Ontario":"ON","ON":"13.6"},
        {"Manitoba":"MB","MB":"1.28"},
        {"Saskatchewan":"SK","SK":"1.1"}
    ]
}'
json_data <- fromJSON(json_str)

2. 整理数据为规整结构

由于原始列表结构不便于直接操作,我们需要将其转换为数据框:

方法1:用dplyr+purrr(推荐,代码更清晰)

先安装依赖包(若未安装):install.packages(c("dplyr", "purrr"))

library(dplyr)
library(purrr)

# 提取data子列表
prov_list <- json_data$data

# 转换为数据框
prov_df <- map_dfr(prov_list, function(item) {
  tibble(
    province = names(item)[1],  # 提取省份全称
    code = names(item)[2],      # 提取省份简称
    population = as.numeric(item[[2]])  # 提取人口数值并转为数值型
  )
})

方法2:Base R实现(无需额外依赖)

prov_list <- json_data$data

# 构建数据框
prov_df <- data.frame(
  province = sapply(prov_list, function(x) names(x)[1]),
  code = sapply(prov_list, function(x) names(x)[2]),
  population = as.numeric(sapply(prov_list, function(x) x[[2]])),
  stringsAsFactors = FALSE
)

3. 找出人口最多的省份

无论用哪种方法整理数据后,都可以轻松筛选出人口最多的省份:

# 用dplyr方法
max_pop_prov <- prov_df %>% slice_max(population, n = 1)

# 用Base R方法
max_pop_index <- which.max(prov_df$population)
max_pop_prov <- prov_df[max_pop_index, ]

# 输出结果
print(max_pop_prov)

运行后会得到结果:

province code population
3        Ontario   ON       13.6

内容的提问来源于stack exchange,提问作者Jessie_W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:55:29