R语⾔排序函数sort(),rank(),order()
在R中,和排序相关的函数主要有三个:sort(),rank(),order()。
sort(x)是对向量x进⾏排序,返回值排序后的数值向量。rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。⽽order()的返回值是对应“排名”的元素所在向量中的位置。
下⾯以⼀⼩段R代码来举例说明:
> 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)
[1] 6 5 4 3 1 8 7 2
假设x为⼀组学⽣完成某项测试所花费的时间(所⽤时间越短,排名越靠前),rank()的返回值是这组学⽣所对应的排名,⽽order()的返回值是各个排名的学⽣成绩所在向量中的位置。
前⼀段同学问我⼀个问题,如何返回⼀个数值向量中满⾜某条件的元素在向量中的位置?举例来说,x<-c(97,93,85,74,32,100,99,67),希望返回x中满⾜值⼤于50且⼩于90的元素在向量x中的下标。当时想了想,没觉得有什么好的⽅法,使⽤了⽐较繁琐的语句
sort(urn=TRUE)[[2]][sort(urn=TRUE)[[1]]<90&sort(urn=TRUE)[[1]]>50],
后来发现sort(urn=TRUE)[[2]]和order(x)的返回值是⼀样的,⽽sort(urn=TRUE)[[1]]和sort(x)的返回值是相同的,因此语句可以简化为order(x)[sort(x)>50&sort(x)<90]。下⾯是相关的R代码:
> x
[1] 97938574321009967
> sort(urn=TRUE)[[2]][sort(urn=TRUE)[[1]]<90&sort(urn=TRUE)[[1]]>50]
rank函数的用法[1] 843
> order(x)[sort(x)>50&sort(x)<90]
[1] 843
> sort(urn=TRUE)
$x
[1] 32677485939799100
$ix
[1] 58432176
> order(x)
[1] 58432176
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论