小编Aid*_*dan的帖子

将sdmx-xml文件读入R中的数据帧

我想知道是否有人设法将SDMX-XML文件读入数据帧.我想阅读的文件是https://www.ecb.europa.eu/stats/sdmx/icpf/1/data/pension_funds.xml(1mb).我将文件保存为"pensions_funds.xml"到pwd并尝试使用XML包来读取它:

fileName <- system.file("pensions", "pensions_funds.xml", package="XML")
parsed<-xmlTreeParse("pension_funds.xml",getDTD=F)
r<-xmlRoot(parsed)
tmp = xmlSApply(r, function(x) xmlSApply(x, xmlValue))
Run Code Online (Sandbox Code Playgroud)

上面的几行基本上遵循这里的例子http://www.omegahat.org/RSXML/gettingStarted.html 但我想我首先需要以某种方式忽略标题(我已经粘贴在文件的前几页下面)我想读书.所以我认为上面的内容可能会起作用,但它会从错误的节点开始.我想抓住他们的time_period和ref_area索引的obs_values.

第一件事就是找到正确的节点然后从那里开始,但是我怀疑我可能是傻瓜的事,因为我对数据格式知之甚少,而且我不确定XML包可以用于SDMX-XML文件.更聪明的人似乎试图这样做 http://opensdmxdevelopers.wikispaces.com/RSDMX 我找不到这个包在其主页上下载 https://r-forge.r-project.org/projects/rsdmx / (我看不到任何链接/下载部分但也许我是盲目的)它似乎是早期阶段.rsdmx的存在建议使用xml包来读取sdmx可能并不容易,所以我准备在这个阶段放弃,除非任何人都成功了.其实我主要对阅读这个文件感兴趣 http://www.ecb.europa.eu/stats/sdmx/bsi/1/data/outstanding_amounts.xml 但是这是一个10mb的文件,所以我开始变小了.

edit3 使用Mischa注释库("XML")中的更改尝试sgibb对大文件的回答

url <- "http://www.ecb.europa.eu/stats/sdmx/bsi/1/data/outstanding_amounts.xml"

    sdmxHandler <- function() {
  ## data.frame which stores results
  data <- data.frame(stringsAsFactors=FALSE)
  ## counter to store current row
  i <- 1
  ## temp value to store current REF_AREA
  ## temp value to store current REF_AREA
  refArea <- NA
  bsItem <- NA
  bsCountSector <- NA

  ## handler subroutine for …
Run Code Online (Sandbox Code Playgroud)

xml r dataset sdmx

6
推荐指数
1
解决办法
2796
查看次数

标签 统计

dataset ×1

r ×1

sdmx ×1

xml ×1