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

使用R语言从OECD下载数据时遭遇HTTP 404错误的求助

解决OECD包search_dataset()和get_datasets()的HTTP 404错误

问题原因

OECD包中get_datasets()和search_dataset()函数依赖的旧SDMX API端点已被移除,导致请求返回404 Not Found;而get_dataset()直接调用的是数据集数据获取端点,未受API变更影响,因此能正常运行。

解决方案

方法1:重写失效函数

通过手动修改函数内的API地址,适配OECD最新的API接口:

  1. (可选)查看原函数实现:
library(OECD)
getAnywhere(get_datasets)
  1. 重新定义get_datasets()函数,替换为最新API地址:
get_datasets <- function(){
  # 使用OECD最新的数据流API端点
  url <- "https://api.oecd.org/sdmx-json/dataflow/OECD/all/latest"
  resp <- httr::GET(url)
  httr::stop_for_status(resp)
  json_data <- jsonlite::fromJSON(httr::content(resp, "text"))
  
  # 解析JSON提取数据集ID、名称和描述
  datasets <- json_data$structure$dataflows$dataflow
  dataset_df <- data.frame(
    id = datasets$id,
    name = datasets$name$`en`,
    description = datasets$description$`en`,
    stringsAsFactors = FALSE
  )
  return(dataset_df)
}
  1. 重写search_dataset()函数,基于新的数据集列表实现关键词搜索:
search_dataset <- function(pattern){
  all_datasets <- get_datasets()
  # 匹配名称或描述中的关键词(忽略大小写)
  matched_rows <- grepl(pattern, all_datasets$name, ignore.case = TRUE) | 
                  grepl(pattern, all_datasets$description, ignore.case = TRUE)
  return(all_datasets[matched_rows, ])
}

修改完成后,重新调用get_datasets()或search_dataset("transport")即可正常获取结果。

方法2:直接调用OECD官方API

如果不想修改包内函数,可直接通过OECD的SDMX API查询数据集列表:

library(httr)
library(jsonlite)

# 获取所有OECD数据集的数据流信息
resp <- GET("https://api.oecd.org/sdmx-json/dataflow/OECD/all/latest")
stop_for_status(resp)
dataflows <- fromJSON(content(resp, "text"))$structure$dataflows$dataflow

# 搜索包含"transport"关键词的数据集
transport_datasets <- subset(dataflows, grepl("transport", name$`en`, ignore.case = TRUE))

# 转换为易读的数据框输出
transport_df <- data.frame(
  数据集ID = transport_datasets$id,
  数据集名称 = transport_datasets$name$`en`,
  stringsAsFactors = FALSE
)
print(transport_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:40:09