在我从网上得到的 XML 响应中,有一部分数据的结构如下:
<votos>
<Deputado Nome="Roberto Britto" ideCadastro="141529" Partido="PP " UF="BA" Voto="Sim "/>
<Deputado Nome="Luiz Argôlo" ideCadastro="160547" Partido="PP " UF="BA" Voto="Sim "/>
<Deputado Nome="José Carlos Araújo" ideCadastro="74140" Partido="PSD " UF="BA" Voto="Sim "/>
</votos>
我解析文件如下:
doc <- xmlTreeParse(raw_result,useInternal=TRUE)
rootNode <- xmlRoot(doc)
然后尝试创建我在开头显示的节点的数据框,如下所示:
rootvotacao <- rootNode[[4]][[1]][[2]]
votacao2 <- xmlSApply(rootvotacao, function(x) xmlSApply(x, xmlValue))
votacao2_df <- data.frame(t(votacao2),row.names=NULL)
但是,我只得到一个表,每列两列,Deputado
一行包含list()
.
我想要的是得到一个表格,每行一行Deputado
和 5 列:Nome
, ideCadastro
, Partido
, UF
, Voto
。
有什么想法吗?谢谢!
您可以使用XML
package 并xmlToList
完成此操作。
library(XML)
raw_result <- '<votos>
<Deputado Nome="Roberto Britto" ideCadastro="141529" Partido="PP " UF="BA" Voto="Sim "/>
<Deputado Nome="Luiz Argôlo" ideCadastro="160547" Partido="PP " UF="BA" Voto="Sim "/>
<Deputado Nome="José Carlos Araújo" ideCadastro="74140" Partido="PSD " UF="BA" Voto="Sim "/>
</votos>'
#i faced encoding issue hence
raw_result <- iconv(raw_result,'latin1','utf-8')
do.call(rbind,xmlToList(raw_result))
输出:
> do.call(rbind,xmlToList(raw_result))
Nome ideCadastro Partido UF Voto
Deputado "Roberto Britto" "141529" "PP " "BA" "Sim "
Deputado "Luiz Argôlo" "160547" "PP " "BA" "Sim "
Deputado "José Carlos Araújo" "74140" "PSD " "BA" "Sim "
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句