使用R中的RSDMX将SDMX转换为数据帧

时间:2018-01-17 04:40:36

标签: json r xml sdmx

我正试图从立陶宛统计局获取数据。他们为SDMX API提供XML或JSON(LSD)。

显示的示例XML是:https://osp-rs.stat.gov.lt/rest_xml/data/S3R629_M3010217,用于下载XML文件。

我试过以下:

devtools::install_github("opensdmx/rsdmx")
library(rsdmx)
string <- "https://osp-rs.stat.gov.lt/rest_xml/data/S3R629_M3010217"
medianage <- readSDMX(string)

导致错误:

<simpleError in doTryCatch(return(expr), name, parentenv, handler): Invalid SDMX-ML file>

我也尝试过简单地阅读手动下载的文件

devtools::install_github("opensdmx/rsdmx")
library(rsdmx)
medianage <- readSDMX(file="rest_data_M3010217_20180116163251.xml" , isURL = FALSE)
medianage <- as.data.frame(medianage)

导致中位数为NULL(空)

也许soneone有一个想法,我如何通过使用以下任一方法解决从LSD下载/转换数据:

https://osp-rs.stat.gov.lt/rest_xml/data/S3R629_M3010217
https://osp-rs.stat.gov.lt/rest_json/data/S3R629_M3010217 

非常感谢!

1 个答案:

答案 0 :(得分:1)

为了将rsdmx用于此数据源,添加了一些增强功能(请参阅https://github.com/opensdmx/rsdmx/issues/141的详细信息)。您需要从Github(版本0.5-11)重新安装rsdmx

您可以使用SDMX-ML文件的网址

library(rsdmx)
url <- "https://osp-rs.stat.gov.lt/rest_xml/data/S3R629_M3010217"
medianage <- readSDMX(url)
df <- as.data.frame(medianage)

rsdmx中添加了一个连接器,以便在LSD(立陶宛统计局)SDMX端点上进行数据查询。请参阅下面有关如何使用它的示例。

sdmx <- readSDMX(providerId = "LSD", resource = "data",
flowRef = "S3R629_M3010217", dsd = TRUE)
df <- as.data.frame(sdmx, labels = TRUE)

上面的示例演示了如何使用从SDMX数据结构定义(DSD)中提取的代码标签来丰富data.frame。为此,请使用dsd = TRUE指定readSDMX。这允许在转换为data.frame时使用labels = TRUE。使用readSDMX过滤数据,例如(startPeriod,endPeriod,代码过滤器),请查看此页面https://github.com/opensdmx/rsdmx/wiki#readsdmx-as-helper-function