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 7485 93 97 99100
>order(x)
[1] 5 8 4 3 2 1 76
>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(x,index.return=TRUE)[[2]][sort(x,index.return=TRUE)[[1]]<90&sort(x,index.return=TRUE)[[1]]>50],后来发现sort(x,index.return=TRUE)[[2]]和order(x)的返回值是一样的,而sort(x,index.return=TRUE)[[1]]和sort(x)的返回值是相同的,因此语句可以简化为order(x)[sort(x)>50&sort(x)<90]。下面是相关的R代码:
>x
[1]97 93 8574 32 100 9967
>sort(x,index.return=TRUE)[[2]][sort(x,index.return=TRUE)[[1]]<90&sort(x,index.return=TRUE)[[1]]>50]
[1] 8 4 3
>order(x)[sort(x)>50&sort(x)<90]
[1] 8 4 3
>sort(x,index.return=TRUE)
$x
R软件中排序:sort(),rank(),order()
[1]32 67 7485 93 97 99100

$ix
[1] 5 8 4 3 2 1 76
>order(x)
[1] 5 8 4 3 2 1 7 6
或许还有更加方便的方法,比如R中有简单的函数可以直接利用,但是暂时还没有找到,以后碰到牛银再请求指点吧!

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/196549.html

更多阅读

转载 易中天先生,这叫险恶 险恶先生

有趣原文地址:易中天先生,这叫险恶作者:丁启阵口臭与心恶丁启阵我一直以为易中天先生是个水平线以上的学者(孔庆东现在还说易中天“才学还不错”)。但是,他近日发表在博客中的《论孔庆东不是王八蛋》一文(易中天新浪博客2012-01-2100:41:

中美博弈,中华家必胜的八个原因:xiniqi198259|2014-06-26

中美博弈,中华家必胜的八个原因!(2014-06-26)最近这几天,许多网友都觉得我对中美博弈的分析太过乐观,对于这种看法,我不否认,不过,我的“乐观”可是有原因的,今天,我就来给大家说道说道。在我看来,现今的中美博弈,咱们中华家占了八个方面的优势

声明:《R软件中排序:sort(),rank(),order()》为网友守護妳分享!如侵犯到您的合法权益请联系我们删除