R中使用pdfetch_ECB下载欧央行数据时order.by报错如何解决
故障原因
欧洲央行近期调整了公开数据接口的返回字段结构,pdfetch包当前版本的pdfetch_ECB()函数未适配该变更,解析时间索引时产生了NA值,最终触发xts对象构造的报错。
可用解决方案
- 方案1:改用
ecb包拉取数据,兼容性更强
# 首次使用先安装依赖包 # install.packages("ecb") library(ecb) library(xts) # 拉取指定指标的原始数据 gdp_raw <- get_data("MNA.Q.Y.I8.W2.S1.S1.B.B1GQ._Z._Z._Z.EUR.LR.GY") # 转换为和原pdfetch输出格式一致的xts对象 gdp <- xts(gdp_raw$obsvalue, order.by = as.Date(gdp_raw$obstime))
- 方案2:临时修复
pdfetch_ECB函数的解析逻辑,无需更换依赖包
pdfetch_ECB_fixed <- function(identifiers) { require(pdfetch) require(xts) # 构造ECB接口请求地址 req_url <- paste0( "https://data.ecb.europa.eu/data/wfs/ECB_RTD?", "request=GetFeature&typename=Observations&outputFormat=csv", "&cql_filter=KEY='", identifiers, "'" ) raw_data <- read.csv(req_url, stringsAsFactors = FALSE) # 适配新接口的日期和数值字段名 dates <- as.Date(raw_data$obstime) values <- as.numeric(raw_data$obsvalue) return(xts(values, order.by = dates)) } # 调用修复后的函数获取数据 gdp <- pdfetch_ECB_fixed("MNA.Q.Y.I8.W2.S1.S1.B.B1GQ._Z._Z._Z.EUR.LR.GY")
说明
两种方案输出的数据格式和原pdfetch_ECB的输出完全一致,不需要修改后续的分析代码。
内容的提问来源于stack exchange,提问作者Cristian
相关产品推荐
相关产品推荐

