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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

本节书摘来自华章计算机《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

相关文章
|
7月前
|
Python
DataFrame排序和排名案例解析
本文演示了如何使用pandas对DataFrame进行排序和排名。首先,通过`pd.DataFrame()`将字典转换为DataFrame,然后利用`sort_values()`按'年龄'列进行升序排序。此外,还使用`rank()`方法为'年龄'列生成排名,并将其添加到DataFrame中作为新的'年龄排名'列。
111 0
|
7月前
|
NoSQL MongoDB Python
深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
使用 sort() 方法对结果进行升序或降序排序。 sort() 方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。
115 0
|
27天前
|
前端开发 Java Maven
深入解析:如何用 Spring Boot 实现分页和排序
深入解析:如何用 Spring Boot 实现分页和排序
50 2
|
2月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
78 9
|
2月前
|
搜索推荐 索引
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(二)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
|
2月前
|
搜索推荐 C++
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(一)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
|
2月前
|
人工智能 搜索推荐 算法
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理(三)
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
各种基础排序的超详细解析及比较
各种基础排序的超详细解析及比较
46 0
|
6月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
|
6月前
|
存储 算法 搜索推荐
深入解析力扣179题:最大数(自定义排序法详解及模拟面试问答)
深入解析力扣179题:最大数(自定义排序法详解及模拟面试问答)

推荐镜像

更多