我是靠谱客的博主 勤奋彩虹,最近开发中收集的这篇文章主要介绍R语言XML格式数据导入与处理 - ShangFR,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据解析

针对XML格式数据,R语言XML包可以对其进行数据导入与处理,详见下面的案例说明。

案例1

直接输入一段标记语言文本,使用XML包解析。

library(XML)

tt =
  '<x>
<a>text</a>
<b foo="1"/>
<c bar="me">
<d>a phrase</d>
</c>
</x>'
doc = xmlParse(tt)
xmlToList(doc)
# use an R-level node representation
doc = xmlTreeParse(tt)
xmlToList(doc)
登录后复制

案例2

导入已有的xml格式数据并处理,本案例用到的是手机通讯录xml数据,按如下步骤操作:

#读取xml格式数据并解析
xmlfile=xmlParse(file.choose(),encoding="UTF-8") 
class(xmlfile)

#形成根目录列表数据
xmltop = xmlRoot(xmlfile) 
class(xmltop) #查看类
xmlName(xmltop) #查看根目录名
xmlSize(xmltop) #查看根目录总数
xmlName(xmltop[[1]]) #查看子目录名

# 查看第一个子目录
xmltop[[1]]
# 查看第二个子目录
xmltop[[2]]

#子目录节点
xmlSize(xmltop[[1]]) #子目录节点数
xmlSApply(xmltop[[1]], xmlName) #子目录节点名
xmlSApply(xmltop[[1]], xmlAttrs) #子目录节点属性
xmlSApply(xmltop[[1]], xmlSize) #子目录节点大小

#查看第一个子目录的第一个节点
xmltop[[1]][[1]]
#查看第一个子目录的第二个节点
xmltop[[1]][[2]]

#第二个子目录
xmltop[[2]][[1]]
xmltop[[2]][[2]]

xmltop[[1]][[3]][[1]][[1]] #查看联系人电话
xmltop[['Contact']][['PhoneList']][[1]][[1]]  #第二种方式
getNodeSet(xmltop, "//Contact/PhoneList")[[1]][[1]][[1]] #第三种方式

xmltop[[1]][[3]][[1]][[1]] = 13717232323 #更改联系人电话
xmltop[[1]][[1]][[1]]= "zhangsan "#更改联系人姓名

#保存
saveXML(xmltop, file="out.xml",encoding="UTF-8")
登录后复制

xml格式转dataframe

按如下步骤操作:

xmlToDataFrame(xmlfile) #第一种方式,直接用xmlToDataFrame()函数

library("plyr") #第二种方式,数据格式处理专用包plyr

MyContact=ldply(xmlToList(file.choose()), data.frame) #先转成list,再转dataframe
View(MyContact)

# 查看联系方式
MyContact[,c("Name" ,"PhoneList.Phone.text")]

# 联系方式保存
write.csv(MyContact, "MyContact.csv", row.names=FALSE)
登录后复制

反馈与建议

以上就是R语言XML格式数据导入与处理 - ShangFR的内容,更多相关内容请关注靠谱客(www.uoften.com)!

最后

以上就是勤奋彩虹为你收集整理的R语言XML格式数据导入与处理 - ShangFR的全部内容,希望文章能够帮你解决R语言XML格式数据导入与处理 - ShangFR所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部