10015 6

[问答] R中对矩阵多列排序 [推广有奖]

  • 0关注
  • 2粉丝

已卖:151份资源

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
172 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
5580 点
帖子
170
精华
0
在线时间
283 小时
注册时间
2014-3-12
最后登录
2023-3-25

楼主
呵呵哼哼哈哈 发表于 2016-3-23 17:00:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
向大家请教一个问题:
现给定一个矩阵,若要将各列按升序或降序排列,如
a
     [,1] [,2]
[1,]    1    2
[2,]    2    3
[3,]    2    1
[4,]    1    2
[5,]    2    3
[6,]    3    2

,可以用a[order(a[,1],a[,2]),]来实现。但实,如果矩阵的列数有很多呢(或者列数是后来计算出来的值)?只能一个一个指定嘛?还是有其他简洁的方法?
二维码

扫码加我 拉你入群

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

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

关键词:Order 降序排列 der

沙发
万人往LVR 在职认证  发表于 2016-3-23 17:52:08
没看懂你的意思。

如果列太多,例如有20个列,那么这样排序是很耗时的,当然你非要做的话也可以:

例如你想将data按前20列排序
  1. library(dplyr)
  2. query <- paste('data[,',1:20,']',sep='') %>%
  3. paste(.,collapse=',') %>%
  4. paste('order(',.,')',sep='')
  5. data[get(query),]
复制代码
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 鼓励积极发帖讨论

总评分: 论坛币 + 10   查看全部评分

藤椅
呵呵哼哼哈哈 发表于 2016-3-23 20:07:04
万人往LVR 发表于 2016-3-23 17:52
没看懂你的意思。

如果列太多,例如有20个列,那么这样排序是很耗时的,当然你非要做的话也可以:
谢谢您的解答~
就是说首先根据第一列的值排序,若第一列值相同,按第二列排序;如此直到最后一列;上述例子中结果应为:
    [,1] [,2]
[1,]    1    2
[2,]    1    2
[3,]    2    1
[4,]    2    3
[5,]    2    3
[6,]    3    2
上述实现时我是指定了对矩阵a的1-2列进行排序,即:a[order(a[,1],a[,2]),],想知道若是多列的时候有没有其他方法?

板凳
jiangbeilu 学生认证  发表于 2016-3-23 22:32:01
以下代码,可以实现你的需求,不过需要把dd矩阵转化成data.frame才能用order进行
  1. x1=c(1,2,2,3,4,1)
  2. x2=c(1,3,4,5,2,3)
  3. dd <- cbind(x1,x2)
  4. dd[do.call(order,as.data.frame(dd)),]
复制代码

报纸
呵呵哼哼哈哈 发表于 2016-3-24 10:03:57
jiangbeilu 发表于 2016-3-23 22:32
以下代码,可以实现你的需求,不过需要把dd矩阵转化成data.frame才能用order进行
谢谢答疑~~
再向您请教一个问题~现在想发现矩阵中不同的行,如:
     [,1] [,2]
[1,]    1    2
[2,]    1    2
只返回【1 2】这一行。
有木有简单点的方法?我现在是自己写了个函数,通过逐行比较实现的

地板
jiangbeilu 学生认证  发表于 2016-3-24 10:17:56
呵呵哼哼哈哈 发表于 2016-3-24 10:03
谢谢答疑~~
再向您请教一个问题~现在想发现矩阵中不同的行,如:
     [,1] [,2]
再学习一下duplicated的用法,就知道怎么处理了

7
呵呵哼哼哈哈 发表于 2016-3-24 10:31:06
jiangbeilu 发表于 2016-3-24 10:17
再学习一下duplicated的用法,就知道怎么处理了
一语点醒,太感谢~~

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 05:05