我一直试图通过他们最近推出的SDMX服务,在R中开发一个与INEGI (墨西哥统计局)数据有关的闪亮应用程序。我已经联系了开发人员自己,他们给了我以下不可行的代码:
require(devtools)
require(RSQLite)
require(rsdmx)
require(RCurl)
url <- paste("http://www.snieg.mx/opendata/NSIRestService/Data/ALL,DF_PIB_PB2008,ALL/ALL/INEGI");
sdmxObj <- readSDMX(url)
df_pib <- as.data.frame(sdmxObj)这就引出了以下错误:
sdmxObj <- readSDMX(url)
Opening and ending tag mismatch: ad line 1 and Name
Opening and ending tag mismatch: b3 line 1 and Name
Opening and ending tag mismatch: b3 line 1 and Department
Opening and ending tag mismatch: c3 line 1 and Contact
Opening and ending tag mismatch: a1 line 1 and Sender
Opening and ending tag mismatch: c3 line 1 and Header
Opening and ending tag mismatch: b3 line 1 and GenericData..。等等,你明白重点了。
我试着使用另一个url (也许这是为了更广泛,引入了每一个GDP计量),但我得到了同样的结果:
url<-"http://www.snieg.mx/opendata/NSIRestService/Data/ALL,DF_PIB_PB2008,ALL/.MX.........C05.......0101/INEGI?format=compact"如果我直接用浏览器下载文件,我似乎得到了有用的结构。
有什么想法吗?这看起来像一个错误的定义直接从源或问题包"rsdmx",如果是,有人找到了正确的解析类似结构的方法吗?
发布于 2015-02-23 09:39:14
你可以试试RJSDMX。
要下载DF_PIB_PB2008数据流的所有时间序列,只需点击:
library(RJSDMX)
result = getSDMX('INEGI', 'DF_PIB_PB2008/.................')或相当于:
result = getSDMX('INEGI', 'DF_PIB_PB2008/ALL')如果你需要时间序列作为结果,你就完成了。Elseway,如果您喜欢data.frame,您可以让它调用:
dfresult = sdmxdf(result, meta=T)您可以在项目维基中找到有关包及其配置的更多信息。
发布于 2015-03-17 16:42:16
上面粘贴的代码,使用rsdmx,工作非常好。你遇到的问题是关于你的工作场所防火墙,因为你正确地发现了。
您只需要加载rsdmx包(其他包不需要明确声明)
require(rsdmx)然后执行以下代码:
url <- paste("http://www.snieg.mx/opendata/NSIRestService/Data/ALL,DF_PIB_PB2008,ALL/ALL/INEGI");
sdmxObj <- readSDMX(url)
df_pib <- as.data.frame(sdmxObj)我已经检查过与此数据源相关的任何潜在问题,但没有。严格遵守您的帖子范围,您的代码就可以了。
尽管如此,如果您在rsdmx中发现了一个bug,您可以直接在https://github.com/opensdmx/rsdmx/issues上提交一张票,提示反馈会提供给用户。您也可以在那里或在rsdmx邮件列表中发送建议或希望的功能。
https://stackoverflow.com/questions/28642633
复制相似问题