R语言XML格式数据导入与处理 - ShangFR

互联网 17-2-25

数据解析

XML是一种可扩展标记语言,它被设计用来传输和存储数据。XML是各种应用程序之间进行数据传输的最常用的工具。它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,它仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。

针对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的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: ShangFR
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:XML Http Request最新替代技术—— Fetch

相关资讯