在R中解析XML
我试图将一些数据从XML文件下载并组织到R中。我已经看过了相关的问题和文档,但大多数都是指使用XML包解析函数,这些函数似乎无法理解我的数据。因此,我的两个问题是1)如何让R将实际数据读入数据帧,而不是XML结构并进行标记?2)我可以使用XML代码中的XML结构信息在R中解析它吗 这就是我正在处理的问题(以及我迄今为止失败的尝试): 非常感谢您的想法、建议、建议等。如果你知道另一个堆栈问题,或者我可以使用的教程或示例,那也可以,不要重复。谢谢 这就是你想要的吗在R中解析XML,xml,r,Xml,R,我试图将一些数据从XML文件下载并组织到R中。我已经看过了相关的问题和文档,但大多数都是指使用XML包解析函数,这些函数似乎无法理解我的数据。因此,我的两个问题是1)如何让R将实际数据读入数据帧,而不是XML结构并进行标记?2)我可以使用XML代码中的XML结构信息在R中解析它吗 这就是我正在处理的问题(以及我迄今为止失败的尝试): 非常感谢您的想法、建议、建议等。如果你知道另一个堆栈问题,或者我可以使用的教程或示例,那也可以,不要重复。谢谢 这就是你想要的吗 library(XML) data
library(XML)
datahere = "~/"
setwd(datahere)
download.file("http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009",paste(datahere,"feddata.xml",sep=""))
tt = xmlParse("feddata.xml")
out <- getNodeSet(tt, "//*[name()='out:issue']", fun=xmlToList)
df <- data.frame(do.call(rbind, out))
head(df)
confidentiality couponRate currency decimals inclusion maturityDate multiplier rate securityType status
1 F 4.750 USD 0 true 2011-01-18 0 P FMC A
2 F 4.500 USD 0 true 2011-02-15 0 P FNM A
3 F 4.625 USD 0 true 2011-02-18 0 P FHL A
4 F 3.250 USD 0 true 2011-02-25 0 P FMC A
5 F 5.500 USD 0 true 2011-03-15 0 P FNM A
6 F 5.625 USD 0 true 2011-03-15 0 P FMC A
value
1 40000000
2 3000000
3 2000000
4 0
5 49000000
6 155000000
库(XML)
datahere=“~/”
setwd(datahere)
下载文件(“http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009,粘贴(datahere,“feddata.xml”,sep=“”)
tt=xmlParse(“feddata.xml”)
使用plyr
和XML
library(XML)
doc <- xmlParse(
"http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009"
)
doc_list <- xmlToList(doc)
library(plyr)
doc_issues <- ldply(doc_list$DataSet$Group, function(d){
if ("issue" %in% names(d)){
d$issue
} else {
NULL
}
})
库(XML)
doc您试图从这个xml文档中提取什么信息?我只是想获得数据的数据观察值,正如Scott和Ramnath在下面所做的那样。在以后的问题中,我会尽量说得更具体一些,但我想这是新事物的困难之一——不知道该问什么问题。啊,我尝试过这种方法,但没能让do.call(rbind)起作用。这是很有帮助的,因为我可以看到我做错了什么,主要是不理解xml文件本身的组织。谢谢奇怪,do.call
和rbind
都在基本的Roh中是的,我不是说函数有问题,我是说我没有正确使用它们。更具体地说,当试图解析XML时,文件顶部不是数据观测值的信息显然无法绑定到观测值。基本上,我无法真正理解如何正确地导航XML,这是您通过“/*[name()='out:issue']”步骤澄清的。我确信这是我缺乏XML结构方面的经验,但是有了您的示例会很有启发性。再次感谢!啊,明白了。玩得开心:)这也很有意思。我需要更加熟悉plyr软件包,但我从来都不知道什么时候该考虑它。非常感谢!
library(XML)
doc <- xmlParse(
"http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009"
)
doc_list <- xmlToList(doc)
library(plyr)
doc_issues <- ldply(doc_list$DataSet$Group, function(d){
if ("issue" %in% names(d)){
d$issue
} else {
NULL
}
})