全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1454 4
2013-01-26
> z<-matrix(c(1:8,2,7,5,9,7,7,3,5),8,2)
>z
     [,1] [,2]
[1,]    1    2
[2,]    2    7
[3,]    3    5
[4,]    4    9
[5,]    5    7
[6,]    6    7
[7,]    7    3
[8,]    8    5
我想根据第二列来排序,使用下面命令:

> z[order(z[,2]),]
     [,1] [,2]
[1,]    1    2
[2,]    7    3
[3,]    3    5
[4,]    8    5
[5,]    2    7
[6,]    5    7
[7,]    6    7
[8,]    4    9


但是这个时候第二列有两个5,相应的第一列的3和8是按照原始顺序排下来的,三个7对应的2、5、6也是按原始顺序排列的,我想让3和8随机出现,即第三行和第四行可能是
[3,]    3    5
[4,]    8    5
也可能是
[3,]    8    5
[4,]    3    5
两者发生的机率一样。三个7对应的三行也是这样。。。请问应该如何写这个命令?谢谢


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-1-26 08:12:56
求解释。。。。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-26 08:35:41
你这里第一列是按照从小到大的顺序排列是因为z的第一列的3,8和2,5,6碰巧是从小到大的顺序。如果z的行是随机排列的,你得到的结果也就是随机的。

> z <- matrix(c(1:8,2,7,5,9,7,7,3,5),8,2)
> z <- z[sample(1:nrow(z)), ]
> z[order(z[,2]),]
     [,1] [,2]
[1,]    1    2
[2,]    7    3
[3,]    8    5
[4,]    3    5
[5,]    2    7
[6,]    6    7
[7,]    5    7
[8,]    4    9
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-26 09:36:05
生成[0,1]uniform distribution 数,按〉0.5或<0.5, 就可以决定如何排。其它同理。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-26 10:36:12
先把z 随机打乱行顺序, 然后在排序

z<-matrix(c(1:8,2,7,5,9,7,7,3,5),8,2)

n <- nrow(z)
z1 <- z[sample(1:n, n), ]
z2 <- z1[order(z1[, 2]), ]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群