我想从欧洲央行网站提取汇率以转换我的本地货币数据。但是,我在使用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)
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.pattern
gsubfn解析XML文件。(这不使用XML包。)
library(gsubfn)
read.pattern(tf, pattern = "'(...)' rate='([0-9.]+)'", col.names = c("currency", "rate"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句