数据解析

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格式数据导入与处理的更多相关文章

  1. Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

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

    数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

  3. R语言分析朝阳医院数据

    R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...

  4. iOS开发之解析XML格式数据

    XML格式的数据是一种数据的传输格式.因为它方便编写.结构清晰,所以深受程序猿的喜爱,非常多人都喜欢使用XML格式数据传输或者作为程序的配置信息. 如今我将来实如今iOS中解析XML格式数据,语言使用 ...

  5. PHP生成和获取XML格式数据

    在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的X ...

  6. R语言处理Web数据

    R语言处理Web数据 许多网站提供的数据,以供其用户的消费.例如,世界卫生组织(WHO)提供的CSV,TXT和XML文件的形式的健康和医疗信息报告.基于R程序,我们可以通过编程提取这些网站的具体数据. ...

  7. yii2 输出xml格式数据

    作者:白狼 出处:http://www.manks.top/yii2_xml_response.html.html本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...

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

    Android使用DOM生成和输出XML格式数据 本文主要简单解说怎样使用DOM生成和输出XML数据. 1. 生成和输出XML数据 代码及凝视例如以下: try { DocumentBuilderFa ...

  9. Controller接收处理json、xml格式数据

    1.RequestBody接收json格式的数据,并直接转为对象. User.java使用lombok依赖包 @Data @AllArgsConstructor @NoArgsConstructor ...

随机推荐

  1. java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...

  2. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  3. ASP.NET中使用DataGrid控件按照条件显示GridView单元格的颜色

    问题描述: 我在做一个关于信用卡管理系统时遇到一个问题:信用卡内金额低于100元时,数字颜色显示为红色,其余显示为绿色 之前,尝试了修改成为模板列以及转换成Reapeater控件,甚至用了Jquery ...

  4. Python小爬虫实例

    有几个注意点: # -*- coding: utf-8 -*- # func passport jw.qdu.edu.cn import re import urllib# python3后urlli ...

  5. PhotoShop简介

    Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件.Photoshop主要处理以像素所构成的数字图像.使用其众多的编修与绘图工具,可以有效地进行图片编 ...

  6. Linux一块网卡添加多个IP地址

    环境: RHEL6.4 需求: Linux一块网卡添加多个IP地址 一.临时生效 1.1 网卡eth0添加一个IP地址 1.2 修改eth0:0的广播地址 二.永久生效 2.1 编辑ifcfg-eth ...

  7. 推荐15款最好的 Twitter Bootstrap 开发工具

    Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定 ...

  8. inuit.css – 基于 Sass 的强大,可扩展的 CSS 框架

    inuit.css 是一个强大的,可扩展的 CSS 框架,另外还是基于 Sass,面向对象的框架.inuit.css 是建立在 BEM 风格的命名约定,非常适合于想要专注于创意而不是代码的设计师以及喜 ...

  9. Android系统如何录制屏幕(录制成mp4格式)

    不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...

  10. js限制文本框只可以输入数字

    封装了一下,要用的话直接调用下面getEvent函数即可   function getEvent() { if (document.all) { return window.event; //for ...