首页 > 编程学习 > R语言—数据排序

R语言—数据排序

发布时间:2022/11/5 16:19:37

文章目录

  • 专题:数据排序
    • 1 使用函数sort()对向量进行排序
    • 2 使用函数order()对向量进行排序
    • 3 使用函数rank()对向量进行排序

专题:数据排序

在Excel中可以对数据进行的基本操作包括:排序、筛选、分类汇总、创建数据透视表等

R语言常用的排序函数包括:sort() order() arrange() rank()

1 使用函数sort()对向量进行排序

sort(x, decreasing=FALSE,….)

对数据集mtcars中的汽车重量这一变量进行升序排序

> sort(mtcars$wt)
 [1] 1.513 1.615 1.835 1.935 2.140 2.200 2.320 2.465 2.620 2.770 2.780 2.875 3.150 3.170 3.190 3.215
[17] 3.435 3.440 3.440 3.440 3.460 3.520 3.570 3.570 3.730 3.780 3.840 3.845 4.070 5.250 5.345 5.424
> y<-c("John",NA,"Linda",NA,"Emily")
> y
[1] "John"  NA      "Linda" NA      "Emily"
> sort(y)
[1] "Emily" "John"  "Linda"
> sort(y,na.last=TRUE)
[1] "Emily" "John"  "Linda" NA      NA     
> sort(y,na.last=FALSE)
[1] NA      NA      "Emily" "John"  "Linda"

sort()处理缺失值的问题。默认移除缺失值,否则放在最后或者最前

> sort(y,index.return=TRUE)
$x
[1] "Emily" "John"  "Linda"

$ix
[1] 3 1 2

添加参数index.return=TRUE,返回结果中包含向量元素的索引。

2 使用函数order()对向量进行排序

返回一个排列,将其第一个参数重新排列成升序或降序

> x<-c("A","D","Z","X","C")
> y<-order(x)
> y
[1] 1 5 2 4 3
> sort(x)
[1] "A" "C" "D" "X" "Z"

说明:order()返回的是排序后生成的向量中的元素在排序前向量中的索引(位置)。

x[order(x)]=sort(x)

使用函数order()和arrange()对数据框进行排序。

> newdf<-mtcars[1:6,1:6]
> newdf[order(newdf$wt),]
                   mpg cyl disp  hp drat    wt
Datsun 710        22.8   4  108  93 3.85 2.320
Mazda RX4         21.0   6  160 110 3.90 2.620
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875
Hornet 4 Drive    21.4   6  258 110 3.08 3.215
Hornet Sportabout 18.7   8  360 175 3.15 3.440
Valiant           18.1   6  225 105 2.76 3.460
> x<-order(newdf$wt)
> x
[1] 3 1 2 4 5 6
> newdf[x,]
                   mpg cyl disp  hp drat    wt
Datsun 710        22.8   4  108  93 3.85 2.320
Mazda RX4         21.0   6  160 110 3.90 2.620
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875
Hornet 4 Drive    21.4   6  258 110 3.08 3.215
Hornet Sportabout 18.7   8  360 175 3.15 3.440
Valiant           18.1   6  225 105 2.76 3.460

使用函数order()对数据框基于多列进行排序。

> newdf<-mtcars[1:6,1:6]
> index<-with(newdf,order(cyl,mpg))
> newdf[index,]

获取mtcars的1-15行以及1:6列数据,使用order()首先按照气缸数量排序,再按照每加仑里程数排序。

3 使用函数rank()对向量进行排序

Description: Returns the sample ranks of the values in a vector. Ties (i.e., equal values) and missing values can be handled in several ways.

rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min")) 
> x<-trunc(runif(6,0,20))
> x
[1]  6  3 17 19  6 14
> y<-rank(x)
> y
[1] 2.5 1.0 5.0 6.0 2.5 4.0

average

> y<-rank(x,ties.method="first")
> y
[1] 2 1 5 6 3 4

> y<-rank(x,ties.method="random")
> y
[1] 2 1 5 6 3 4
> y<-rank(x,ties.method="random")
> y
[1] 3 1 5 6 2 4

返回向量中值的样本秩。关系(即相等的值)和缺失的值可以用几种方法处理。

x<-trunc(rnorm(6,10,2))
> x
[1] 14 10 10 11  8 10
> y1<-rank(x,ties.method = "average")
> y1
[1] 6 3 3 5 1 3

rnorm生成正态分布

个数 均值 标准差

> y1<-rank(x,ties.method = "max")
> y1
[1] 6 4 4 5 1 4


> y1<-rank(x,ties.method = "min")
> y1
[1] 6 2 2 5 1 2

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式