《R语言数据挖掘:实用项目解析》——1.4 排序与合并数据框

简介:

本节书摘来自华章计算机《R语言数据挖掘:实用项目解析》一书中的第1章,第1.4节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra),译 黄芸,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 排序与合并数据框

在做数据管理时,排序与合并是两个重要概念。它们的操作对象可以是单一向量或者是一个数据框,还可以是一个矩阵。R语言中的sort()用于对向量进行排序。降序命令选项可用以改变排序的方向(升序或降序)。在处理像ArtPiece.csv这样的数据框时,用order命令对数据进行排序,可以设置多个变量是升序还是降序。如要执行降序,可以在一个变量名前加一个负号。下面利用一个数据集来阐释R语言中的排序概念,代码如下:

image

ArtPiece数据集里有16个变量:10个数值变量和6个分类变量。使用names命令可输出数据集中所有变量的名字。借助attach函数,当前R会话中的所有变量名都会保存下来,用户就不需要每次在输入变量名时在前面加上数据名:

image

排序默认采用升序排列,如果想对向量进行降序排列,则需要在排序的变量名前加一个负号。如下所示,变量Critic.Ratings也可以以降序排列。要以降序排列,命令中的decreasing需要设置成True:

image

除了对单个数值向量排序,大多数时候数据集需要按一些输入变量或数据框中的当前属性进行排序。对单个变量排序和对数据框排序有很大不同。下面的代码演示了如何使用order函数对数据框排序:

image

如上面的代码所示,变量Critic.Ratings和Acq. Cost以升序排列,使用的是order命令而非sort命令。head命令默认输出有序数据的前6条记录。order命令中的第二个参数1∶5表明我们想要输出ArtPiece数据集前6条记录的前五个变量。如果需要输出前10条记录,可以执行head(i2, 10)。这个数据集没有缺失值,但需要注意的是,实际数据中是存在缺失值(NA)的。而在有缺失值(NA)时,数据框的排序会变得比较棘手。假使将数据集中的任意NA值纳入考虑,order命令会产生以下结果:

image

NA.LAST命令用于将缺失值(NA值)从数据集中分离开来——它们会被放到数据集的末尾(如果NA.LAST是TRUE),或是数据集的开头(如果NA.FAST是FALSE)。在order函数中分离出NA值可以保证数据的完整性。

merge函数用于合并两个数据框。要合并两个数据框,前提是它们至少有一列是同名的。两个数据框也可以通过列合并函数合并。为了显示列合并函数和merge函数的区别,我们以audit.CSV数据集作为例子。现有从audit数据集中抽取的两个小数据集A和B:

image

以ID和Employment这两列作为数据集A和B的公共列,可以以此作为合并两个数据框的主键。使用merge命令,共有列将在merge函数的输出数据集中出现一次。合并的数据框包含了两个数据框的所有行:

image

merge函数提供4种合并数据的方法:自然连接、全外部连接、左外部连接和右外部连接。除了这些连接外,两个数据框还可以基于任何指定的单列或多列进行合并。自然连接只保留两个数据框合并时匹配上的行,可用参数all=F设定:

image

全外部连接让我们可以保留两个数据框的所有行,这可用all=T命令指定。它执行全合并,并用NA值补全两个数据框中都没有匹配数据的列。merge函数默认会除去两个数据框中所有不相匹配的记录。若要在新数据框中保留所有记录,则需要设定all=T:

image

左外部连接将包含数据框1(A)的所有行和数据框2(B)中连接匹配上的行。若要完成左外部连接,则需要规定all.x=T:

image

右外部连接将包含数据框B的所有行和数据框A中连接匹配上的行。若要完成右外部连接,则需要规定all.y=T:

image
image

在数据框A和B中,有两个公共列,即ID和Employment。使用merge函数时,如果选择按单个公共列合并,那么另一个公共列也会出现在输出数据框中。如果合并多个数据框,多重的列将不会出现在输出数据框中:

image

在两个数据框至少有一个共同列时,merge函数是有用的。如果两个数据框都包含不重叠的列或者两个数据框没有共同列,可使用column bind函数合并两个数据框。column bind函数输出数据框A和数据框B中的所有列且将其并排排列。

image

相关文章
|
8月前
|
数据挖掘
R语言笔记丨数据的合并、拆分、整合
R语言笔记丨数据的合并、拆分、整合
|
8月前
|
存储
R语言笔记丨因子、数据框基础知识
R语言笔记丨因子、数据框基础知识
|
8月前
R语言之数据框的合并
R语言之数据框的合并
159 1
R语言之数据框的合并
|
8月前
|
人工智能 数据挖掘 Linux
ChatGPT × R语言 丨实际数据分析过程中,AI能够带来哪些改变?数据框操作案例分享
ChatGPT × R语言 丨实际数据分析过程中,AI能够带来哪些改变?数据框操作案例分享
|
8月前
|
Linux Python
彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!
彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!
|
10月前
R语言-创建空数据框(Empty Data Frame )用于追加数据
本文分享了如何在R语言通过创建空数据框来实现追加数据的简单实现方法,以供参考
611 0
|
10月前
|
存储 关系型数据库 数据挖掘
R语言-Chunk大型数据框与稀疏矩阵应对 as.matrix溢出异常 “problem too large”
本文提出一种在R里面将大型数据集通过分块的方式转换出 DataFrame和 SparseMatrix的方法,能有效避免内存溢出、程序崩溃等严重问题。
128 0
|
SQL 数据库
R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的。 Data Frame每一列有列名,每一行也可以指定行名。
3345 0

热门文章

最新文章