数据解析

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 representationdoc = 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") #第二种方式,数据格式处理专用包plyrMyContact=ldply(xmlToList(file.choose()), data.frame) #先转成list,再转dataframeView(MyContact)# 查看联系方式MyContact[,c("Name" ,"PhoneList.Phone.text")]# 联系方式保存write.csv(MyContact, "MyContact.csv", row.names=FALSE)

反馈与建议

以上就是R语言XML格式数据导入与处理 - ShangFR的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. XML包导入和处理XML数据格式|R包
  2. 基于关系型数据库引擎的"XML"索引技术
  3. 读写xml所有节点个人小结 和 读取xml节点的数据总结
  4. 使用xml作为数据源,配合asp:Menu类自由扩展菜单项
  5. 从无到有实现一个xml数据库登录验证
  6. 从XML中读取数据到内存的实例
  7. 使用XSLT将XML数据转换成HTML
  8. 使用纯HTML的通用数据管理和服务
  9. HTML中的XML数据岛记录编辑与添加的详细介绍

随机推荐

  1. Android JNI和NDK学习(3)--Android.mk分
  2. android Re-installation failed due to
  3. 举例说明android中ProgressBar的用法
  4. 播放音乐ProgressBar进度条
  5. Android Studio 打包错误org.gradle.api.
  6. error: resource android:attr/fontVaria
  7. android 启动时会多显示一个闪现屏
  8. Android内核编译和裁剪
  9. Spinner 使用方法小结
  10. ListView中使用线程实现无限加载