R语言排序三个基本函数:sort(),rank(),order()的用法
1、sort()
用法:sort(a,decreasing=T) 或 sort(a,decreasing=T)
其中,a为要排序的向量
# sort()排序,排序结果不可逆转
# 默认是升序
# decreasing为TRUE,表示降序
# decreasing为FALSE,表示升序
#排序后并不会修改原对象的值
#示例如下:
> a <- c(3,9,16,6,7,4,22,5,10,13)
> #sort()默认为从小到大(升序)排序,等同于decreasing=FALSE
> sort(a)
[1] 3 4 5 6 7 9 10 13 16 22
> sort(a,decreasing = F)
[1] 3 4 5 6 7 9 10 13 16 22
> #decreasing=TRUE,为从大到小(降序)排序
> sort(a,decreasing = T)
[1] 22 16 13 10 9 7 6 5 4 3
#排序并不会修改原对象的值,a仍为原来未排序的a
> a
[1] 3 9 16 6 7 4 22 5 10 13
2、order()
函数说明:返回的值表示位置,默认是升序,依次对应的是向量的最小值、次小值、第三小值…最大值
用法:order(a), a为要排序的向量
order(… = data, na.last = TRUE,decreasing = TRUE)
… 表示待排序向量
na.last 表示时候将NA值放在最后面(默认排序忽略NA)
decreasing 表示是否按照降序排序,默认升序。
> a <- c(3,9,16,6,7,4,22,5,10,13)
> order(a)
[1] 1 6 8 4 5 2 9 10 3 7
#说明:在向量a中,3是第一小的数,位置下标为1;4是第二小的数,位置下标为6;最大的数是22,位置下标为7
#a[order(a)] 等同于sort(a)
> a[order(a)]
[1] 3 4 5 6 7 9 10 13 16 22
3、rank()
用法:rank(a)
函数说明:指出当前向量中各元素大小的排名,默认升序
函数还有其他的参数:rank(x = data, na.last = TRUE)
x 表示待排序的向量
na.last 表示是否排序时是否将NA放在最后面,默认忽略NA
> a
[1] 3 9 16 6 7 4 22 5 10 13
> sort(a)
[1] 3 4 5 6 7 9 10 13 16 22
> rank(a)
[1] 1 6 9 4 5 2 10 3 7 8
#说明:向量a中的第一个数为3,是最小的,故排名为1;第二个数是9,是第六小的数,排名为6
4、sort()、order()、rank()总体比较
> a <- c(3,9,16,6,7,4,22,5,10,13)
> a
[1] 3 9 16 6 7 4 22 5 10 13
> sort(a) #将a**从小到大排序并列出**
[1] 3 4 5 6 7 9 10 13 16 22
> order(a) #返回从小到大的数的**位置下标**,a[order(a)]=sort(a)
[1] 1 6 8 4 5 2 9 10 3 7
> rank(a) #返回a中**每个数的排名(从小到大)**
[1] 1 6 9 4 5 2 10 3 7 8
> a
[1] 3 9 16 6 7 4 22 5 10 13
#注意:经过sort()、order()、rank()排序后,a不改变