将XML解析为R

经济学家

我想从欧洲央行网站提取汇率以转换我的本地货币数据。但是,我在使用xpath时遇到了很多麻烦(尽管对我很有帮助)。

library(XML)

fileURL <- "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml?93aad09b8f8b7bdb69cd1574b5b2665f"
download.file(fileURL, destfile=tf <- tempfile(fileext=".xml"))

xml_file <- xmlParse(tf)
xml_data <- xmlRoot(xml_file)

currency <- xml_data[["number(//Cube/@currency)"]]
rate <- xml_data[["number(//Cube/@rate)"]]

然后我只想创建一个简单的数据框:

df <- data.frame(currency, rate)
G.格洛腾迪克

1)xpathSApply以下行给出了m带有货币和汇率列的字符矩阵

m <- t(xpathSApply(xml_data, "//*[@rate]", xmlAttrs))

如果需要以包含字符和数字列的数据框的形式,请添加以下内容:

read.table(text = paste(m[, 1], m[, 2]), as.is = TRUE)

注意:我们避免了必须*在XPath表达式中使用来处理名称空间,但是如果希望Cube像问题中那样显式引用,则可以这样做:

m <- xpathSApply(xml_data, "//x:Cube[@rate]", xmlAttrs, namespaces = "x")

2)read.pattern另一种方法是使用read.patterngsubfn解析XML文件(这不使用XML包。)

library(gsubfn)
read.pattern(tf, pattern = "'(...)' rate='([0-9.]+)'", col.names = c("currency", "rate"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章