R语言学习笔记系列——R语言对数据进行排序的三种方法

1.7 数据排序

对数据进行排序是一种频次非常高的需求,有时候仅仅通过简单的排序,就可以获取数据相当多的信息。比如,查看 mtcars 数据集中哪些汽车的油耗最佳;哪些汽车的加速最快等等。 R 语言中与排序有关的函数有三个,即order()、sort()、和rank()。三个函数默认都是按照升序计算相关结果,调用格式如下

R语言学习笔记系列——R语言对数据进行排序的三种方法

1.7.1 order() 函数

order() 函数返回的是对应排名的元素在原向量中的位置,其调用格式如下:

R语言学习笔记系列——R语言对数据进行排序的三种方法

参数含义如下:

  • ...: 一个或多个需要排序的向量,若有多个,则长度必须一致。

  • na.last: 逻辑型,若为 TRUE,则 NA 排在最后;若为 FALSE,则排在最前,默认为 TRUE。

  • decreasing: 逻辑型,若为 TRUE,为升序排列;若为 FALSE,为降序排列,默认为 FALSE。

  • method: 字符型,排序方法,详细信息请查看文档,一般选择默认的 auto 即可。

因为 order() 不直接返回一个排好序的向量,而是返回对应排名在向量中的位置,因此要获得排好序的变量,还需要再将 order() 返回的结果作为下标。

R语言学习笔记系列——R语言对数据进行排序的三种方法

通过上例可以看出,通过 order(x) 返回的并不是排序后的向量。其含义是排在第1的数字在原向量中的位置为5,排在第2的数字在原向量中的位置为1,以此类推。因此,若要通过 order() 函数实现对原函数的直接排列,还需要再将 order()函数返回的结果传递给对象的下标。

1.7.2 rank() 函数

rank() 函数是求秩的函数,它返回的是想两种对应元素的排名,其调用格式如下:

R语言学习笔记系列——R语言对数据进行排序的三种方法

参数含义如下:

  • x: 需要计算秩的向量

  • na.last: 逻辑型,若为 TRUE,则 NA 排在最后;若为 FALSE,则排在最前,默认为 TRUE。

  • ties.method: 字符型,排序方法,用于指定存在相等值时如何计算秩。

R语言学习笔记系列——R语言对数据进行排序的三种方法

上面 rank() 函数返回结果的含义是:原向量中第1个数字排序为2,第2个数字排序为4,第三个数字排序为3,以此类推。若序列中有想等值,则情况会复杂一些,会根据 ties.method 的值做不同的处理。

R语言学习笔记系列——R语言对数据进行排序的三种方法

之所以会出现上述结果,是因为序列排序后为 1 1 2 3 3 4 5 5 5 6 9 ,原向量中第一个数据3在排序后的向量的位置为4和5,其平均值为4.5,因此数字3的秩就是4.5。若 ties.method = "first",则按照出现的顺序计算秩,第一个3在排序后的向量中的位置是4,因此其秩为4,第二个3在排序后的向量中的位置为5,因此其秩为5。若 ties.method = "max" ,则按最大值计算,因为两个3在排序后向量中的位置最大为5,因此其秩均为5;同理,若ties.method = "min",两个3的秩均为4。其余参数含义留给读者自行查看文档或者试验。

1.7.3 sort() 函数

sort() 函数直接返回排序后的新向量。其条用格式如下:

R语言学习笔记系列——R语言对数据进行排序的三种方法

参数含义如下:

  • x: 需要进行排序的向量

  • decreasing: 逻辑型,若为 TRUE,则 降序排列;若为 FALSE,则升序排列。默认为升序排列

  • na.last: 逻辑型,若为 TRUE,则 NA 排在最后;若为 FALSE,则排在最前,默认为 TRUE。

典型的用法如下:

R语言学习笔记系列——R语言对数据进行排序的三种方法


喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)

相关推荐