将XML解析为R
发布时间:2020-12-16 23:18:49 所属栏目:百科 来源:网络整理
导读:我想从 ECB website中提取汇率以转换我的本地货币数据.但是,我在使用xpath时遇到了很多困难(尽管 this对我帮助很大). library(XML)fileURL - "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml?93aad09b8f8b7bdb69cd1574b5b2665f"download.fi
我想从
ECB website中提取汇率以转换我的本地货币数据.但是,我在使用xpath时遇到了很多困难(尽管
this对我帮助很大).
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 <- 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另一种方法是使用gsubfn中的read.pattern解析XML文件. (这不使用XML包.) library(gsubfn) read.pattern(tf,pattern = "'(...)' rate='([0-9.]+)'",col.names = c("currency","rate")) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |