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

数据解析

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)
时间: 2024-08-04 22:12:13

R语言XML格式数据导入与处理的相关文章

使用JAXB 进行XML格式数据导入导出 Restful service

JAXB技术介绍(引用的) Java Architecture for XML Binding (JAXB) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档.从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数. 这意味着你不需要处理甚至不需要知道XM

R语言笔记之数据篇

R语言杂七杂八 与R语言有关的应用工具 探索性数据分析 统计推断 回归分析 机器学习-分类问题 R与Rstudio的获取与安装 包package一种扩展R基本功能的机制集成了众多函数 获取包 导入包libraryname 获取帮助 R语言特点 R语言语法基础之数据篇 R语言中的数据 R语言支持的数据类型 基本数据结构 一维数据类型 向量 vocter 1创建 2提取子集 因子 factor 1创建 2提取子集 二维数据类型 矩阵 matrix 1生成矩阵 1matrix方法 2 修改dim属性来

Android之解析XML格式数据

作用:在网络上传输数据时最常用的格式有两种,XML 和 JSON.解析XML格式数据获得与后台交互的信息. 种类: 3种:Pull 解析方式:SAX 解析方式:DOM解析方式. 1.使用Pull解析器解析XML文档Pull解析器的运行方式和SAX解析器很相似,它提供了类似的事件,比如文档开始.文档结束.开始元素和结束元素等.使用parser.next()方法可以进入下一个元素并触发相应的事件.各种事件均已数字的形式被发送,因此可以在程序中使用一个switch语句来对事件进行选择,然后进行相应的事

iOS开发之解析XML格式数据

XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用Swift. 首先自己写一个简单的XML: <data> <person age="15">zhangsan</person> <person age="2">lisi</person> <person&

iOS dom解析xml格式数据

问题描述:接口返回的是xml格式数据,而且节点名居然都是相同的,采用了dom解析最终解决 一.文件导入 1.下载GDataXMLNode.h 和 GDataXMLNode.m文件,导入工程(csdn文件下载链接:http://download.csdn.net/detail/wusangtongxue/9502292) 2.配置环境: (1)改成ARC环境(-fno-objc-arc): (2)找到“Paths\Header Search Paths”项,并添加“/usr/include/lib

MyEclipse 2013 Web Service 实现以xml格式数据传递

提示:由于版本问题,使用MyEclipse 2013web Service的框架只有JAX-WS和JAX-RS,就没有XFire这个框架了....个人觉得XFire不怎么好用 一,新建一个服务器端的Web Service Project项目 2,我的xml数据是从数据库中来的,所有在生成xml之前,要连接数据库查询出来放在集合里...这些过程码农们自己写咯.... 这个是查询出,生成xml格式数据的.... 3,最重要的发布service 4,现在就把你的项目发布到tomcat中,不过咧...肯

[译]用R语言做挖掘数据《二》

数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好用的编辑器,最简单的用法可以参考课程[Vim编辑器](http://www.shiyanlou.com/courses/2)3. R:在命令行输入‘R’  进入R语言

ios网络学习------8 xml格式数据的请求处理 用代码块封装

#pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里是乱写的 //1简历NSURL NSURL *url = [NSURL URLWithString:str]; //2建立NSURLRequest NSURLRequest *request =

Android使用DOM生成和输出XML格式数据

Android使用DOM生成和输出XML格式数据 本文主要简单讲解如何使用DOM生成和输出XML数据. 1. 生成和输出XML数据 代码及注释如下: try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); //创建一个新的Document对象,并非获取 Document xmlDocume