- R 菜鸟教程
- R - 教程
- R - 概述
- R - 环境设置
- R - 基本语法
- R - 数据类型
- R - 变量
- R - 运算符
- R - 判断语句
- R - Loop (循环)
- R - 函数
- R - 字符串
- R - 矢量
- R - 列表
- R - 矩阵
- R - 数组
- R - 因子
- R - 数据帧
- R - 包(Packages)
- R - 数据重塑
- R 数据接口
- R - CSV 文件
- R - Excel 文件
- R - 二进制文件
- R - XML 文件
- R - JSON 文件
- R - Web 数据
- R - 数据库
- R 图表和图形
- R - 饼图
- R - 条形图
- R - 箱线图
- R - 直方图
- R - 折线图
- R - 散点图
- R 统计示例
- R - 平均值、中位数和众数
- R - 线性回归
- R - 多元回归
- R - Logistic 回归
- R - 正态分布
- R - 二项分布
- R - 泊松回归
- R - 协方差分析
- R - 时间序列分析
- R - 非线性最小二乘法
- R - 决策树
- R - 随机森林
- R - 生存分析
- R - 卡方检验
R - XML 文件
XML 是一种文件格式,它使用标准 ASCII 文本在万维网、内部网和其他地方共享文件格式和数据。它代表可扩展标记语言 (XML)。与 HTML 类似,它包含标记标记。但是,与 HTML 不同,在 HTML 中,markup 标记描述页面的结构,而在 xml 中,markup 标记描述文件中包含的数据的含义。
您可以使用 “XML” 包在 R 中读取 xml 文件。可以使用以下命令安装此软件包。
install.packages("XML")
输入数据
通过将以下数据复制到文本编辑器(如记事本)中来创建 XMl 文件。使用 .xml 扩展名保存文件,并选择文件类型作为 all files(*.*)。
<RECORDS>
<EMPLOYEE>
<ID>1</ID>
<NAME>Rick</NAME>
<SALARY>623.3</SALARY>
<STARTDATE>1/1/2012</STARTDATE>
<DEPT>IT</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>2</ID>
<NAME>Dan</NAME>
<SALARY>515.2</SALARY>
<STARTDATE>9/23/2013</STARTDATE>
<DEPT>Operations</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>3</ID>
<NAME>Michelle</NAME>
<SALARY>611</SALARY>
<STARTDATE>11/15/2014</STARTDATE>
<DEPT>IT</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>4</ID>
<NAME>Ryan</NAME>
<SALARY>729</SALARY>
<STARTDATE>5/11/2014</STARTDATE>
<DEPT>HR</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>5</ID>
<NAME>Gary</NAME>
<SALARY>843.25</SALARY>
<STARTDATE>3/27/2015</STARTDATE>
<DEPT>Finance</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>6</ID>
<NAME>Nina</NAME>
<SALARY>578</SALARY>
<STARTDATE>5/21/2013</STARTDATE>
<DEPT>IT</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>7</ID>
<NAME>Simon</NAME>
<SALARY>632.8</SALARY>
<STARTDATE>7/30/2013</STARTDATE>
<DEPT>Operations</DEPT>
</EMPLOYEE>
<EMPLOYEE>
<ID>8</ID>
<NAME>Guru</NAME>
<SALARY>722.5</SALARY>
<STARTDATE>6/17/2014</STARTDATE>
<DEPT>Finance</DEPT>
</EMPLOYEE>
</RECORDS>
读取 XML 文件
XML 文件由 R 使用函数 xmlParse() 读取。它以列表的形式存储在 R 中。
# 加载读取XML文件所需的包。
library("XML")
# 还要加载其他所需的包。
library("methods")
# 为函数指定输入文件名。
result <- xmlParse(file = "input.xml")
# 打印结果。
print(result)
当我们执行上述代码时,它会产生以下结果——
1
Rick
623.3
1/1/2012
IT
2
Dan
515.2
9/23/2013
Operations
3
Michelle
611
11/15/2014
IT
4
Ryan
729
5/11/2014
HR
5
Gary
843.25
3/27/2015
Finance
6
Nina
578
5/21/2013
IT
7
Simon
632.8
7/30/2013
Operations
8
Guru
722.5
6/17/2014
Finance
Rick
623.3
1/1/2012
IT
2
Dan
515.2
9/23/2013
Operations
3
Michelle
611
11/15/2014
IT
4
Ryan
729
5/11/2014
HR
5
Gary
843.25
3/27/2015
Finance
6
Nina
578
5/21/2013
IT
7
Simon
632.8
7/30/2013
Operations
8
Guru
722.5
6/17/2014
Finance
获取 XML 文件中存在的节点数
# 加载读取XML文件所需的包。
library("XML")
library("methods")
# 为函数指定输入文件名。
result <- xmlParse(file = "input.xml")
# 从xml文件中提取根节点。
rootnode <- xmlRoot(result)
# 查找根中的节点数。
rootsize <- xmlSize(rootnode)
# 打印结果。
print(rootsize)
当我们执行上述代码时,它会产生以下结果——
output
[1] 8
[1] 8
第一个节点的详细信息
让我们看看解析文件的第一条记录。它将让我们了解顶级节点中存在的各种元素。
# 加载读取XML文件所需的包。
library("XML")
library("methods")
# 为函数指定输入文件名。
result <- xmlParse(file = "input.xml")
# 从xml文件中提取根节点。
rootnode <- xmlRoot(result)
# 打印结果。
print(rootnode[1])
当我们执行上述代码时,它会产生以下结果——
$EMPLOYEE
1
Rick
623.3
1/1/2012
IT
attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"
1
Rick
623.3
1/1/2012
IT
attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"
获取节点的不同元素
# 加载读取XML文件所需的包。
library("XML")
library("methods")
# 为函数指定输入文件名。
result <- xmlParse(file = "input.xml")
# 从xml文件中提取根节点。
rootnode <- xmlRoot(result)
# 获取第一个节点的第一个元素。
print(rootnode[[1]][[1]])
# 获取第一个节点的第五个元素。
print(rootnode[[1]][[5]])
# 获取第三个节点的第二个元素。
print(rootnode[[3]][[2]])
当我们执行上述代码时,它会产生以下结果——
1
IT
Michelle
IT
Michelle
XML 转数据帧
为了有效地处理大型文件中的数据,我们将 xml 文件中的数据作为数据帧读取。然后处理数据帧以进行数据分析。
# 加载读取XML文件所需的包。
library("XML")
library("methods")
# 将输入xml文件转换为数据帧。
xmldataframe <- xmlToDataFrame("input.xml")
print(xmldataframe)
当我们执行上述代码时,它会产生以下结果——
ID NAME SALARY STARTDATE DEPT
1 1 Rick 623.30 2012-01-01 IT
2 2 Dan 515.20 2013-09-23 Operations
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
6 6 Nina 578.00 2013-05-21 IT
7 7 Simon 632.80 2013-07-30 Operations
8 8 Guru 722.50 2014-06-17 Finance
1 1 Rick 623.30 2012-01-01 IT
2 2 Dan 515.20 2013-09-23 Operations
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
6 6 Nina 578.00 2013-05-21 IT
7 7 Simon 632.80 2013-07-30 Operations
8 8 Guru 722.50 2014-06-17 Finance
由于数据现在可用作 DataFrame,因此我们可以使用 Data Frame 相关函数来读取和操作文件。