楼主: kk22boy
43282 23

[学习分享] R中order()命令到底是什么意思? [推广有奖]

11
jmpamao 发表于 2013-1-10 22:04:47
qoiqpwqr 发表于 2013-1-10 12:11
order只对第一个元素作用,所以这里b就被忽略掉了,其实就是order(a)
order(a,b) 是先a排序, 在a基础上,再按照b 来排序。
比如

a <- c(1,2,1,3,1)
b <- c(1,2,3,3,4)
data.frame(a,b)[order(a,b),]

  a b
1 1 1
3 1 3
5 1 4
2 2 2
4 3 3

12
阡陌寂夏 发表于 2013-1-11 21:26:44
感觉排出的是a,b未排列,order()也看不懂,高手指点下

13
jmpamao 发表于 2013-1-11 23:46:54
阡陌寂夏 发表于 2013-1-11 21:26
感觉排出的是a,b未排列,order()也看不懂,高手指点下
ab <- data.frame(a=c(1,3,2,1,4),b=c(2,1,4,3,1))
ab
> ab  
   a b
1 1 2
2 3 1
3 2 4
4 1 3
5 4 1
#order()是把原来的ab下标,按照a/b 的值 由大到小(-ab$b), 或由小到大重新排序, order(。。)返回的值是下标
ab[order(ab$a),]
   a b
1 1 2
4 1 3
3 2 4
2 3 1
5 4 1
ab[order(ab$a,ab$b),]  # 和ab[order(ab$a),]相同,默认ab$b按照由小到大
> ab[order(ab$a,ab$b),]
   a b
1 1 2
4 1 3
3 2 4
2 3 1
5 4 1
ab[order(ab$a,-ab$b),]    #a有小到大排序后, 如a中有相同的值,b 由大到小排
> ab[order(ab$a,-ab$b),]
   a b
4 1 3
1 1 2
3 2 4
2 3 1
5 4 1
ab[order(ab$b,ab$a),]  #先b排列, 后b的基础上a在进行排列
> ab[order(ab$b,ab$a),]
   a b
2 3 1
5 4 1
1 1 2
4 1 3
3 2 4
就了解这么多,希望有帮助。呵呵

14
randy1987 发表于 2013-1-12 11:51:16
排序得到撒 ,。

15
左脸 发表于 2013-3-30 13:33:07
那为啥下面的情况不同呢
>x<-c(10,6,4,7,8)
> order(x)
[1] 3 2 4 5 1

16
淘宝网橙迷橙橙 发表于 2013-3-30 18:39:58
“那为啥下面的情况不同呢
>x<-c(10,6,4,7,8)
> order(x)
[1] 3 2 4 5 1”

以上结果没问题,order(x)返回值的意思是:
排在order第1位的是x中的第3个元素4,排在order第2位的是x中的第2个元素6,依次类推。。。
所以order[1]对应3,order[2]对应2,...
已有 1 人评分学术水平 热心指数 收起 理由
MOON... + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

17
琳琳琳 发表于 2014-6-20 14:21:06
感谢各位的精彩解答!!!!太棒了!

18
墨名 发表于 2014-12-2 15:47:56
淘宝网橙迷橙橙 发表于 2013-3-30 18:39
“那为啥下面的情况不同呢
>x order(x)
[1] 3 2 4 5 1”
这个解答才是最直接的,R的帮助文档还是不够清楚

19
MOON... 发表于 2016-11-1 22:53:32
淘宝网橙迷橙橙 发表于 2013-3-30 18:39
“那为啥下面的情况不同呢
>x order(x)
[1] 3 2 4 5 1”
好棒的解释

20
deephilla 发表于 2017-3-19 20:27:08
order(a,b) 就是excel中的排序,按照多个关键字先后排序。 用excel 中的那个概念便于理解。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 06:06