在R中,和排序相关的函数主要有三个:sort(),rank(),order()。
> x<-c(97,93,85,74,32,100,99,67)
> sort(x)
[1] 32 67 74 85 93 97 99 100
> order(x)
[1] 5 8 4 3 2 1 7 6
> rank(x)
- sort(x)是对向量x进行排序,返回值排序后的数值向量。
- rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。
- order()的返回值是对应“排名”的元素所在向量中的位置。
Order:
1. 函数解释:
order(x)返回的是一个permutation。也就是说,把x的数从小到大排序形成y,y中每个element在原来向量(x)中的位置。
下面以一小段R代码来举例说明:> x<-c(97,93,85,74,32,100,99,67)
> sort(x)
[1]
> order(x)
[1] 5 8 4 3 2 1 7 6
> rank(x)
[1] 6 5 4 3 1 8 7 2
2.函数应用:order()可以用于对data frame格式的数据,针对某列数据大小进行排列。
e.g:
mimi
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
xx 4 3 2 1 2 3 4 5
qw 1 2 3 4 5 6 7 8
gg 9 10 11 12 13 14 15 16
要根据第一列进行排序,可以这样做:
> mimi(order(mimi[,1]),)
>
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
qw 1 2 3 4 5 6 7 8
xx 4 3 2 1 2 3 4 5
gg 9 10 11 12 13 14 15 16
3.函数其他参数:可以多参照排序(即第一个参照相同的情况下,按照第二个参照排序)
e.g.
R> dd[with(dd, order(-z, b)), ]
b x y z
4 Low C 9 2
2 Med D 3 1
1 Hi A 8 1
3 Hi A 9 1