首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据R中的第一列对矩阵进行排序

根据R中的第一列对矩阵进行排序
EN

Stack Overflow用户
提问于 2013-01-16 21:37:01
回答 6查看 154K关注 0票数 50

我有一个矩阵,它有两列,格式如下:

代码语言:javascript
复制
1 349
1 393
1 392
4 459
3 49
3 32
2 94

我希望根据第一列对此矩阵进行升序排序,但我希望将相应的值保留在第二列中。

输出将如下所示:

代码语言:javascript
复制
1 349
1 393
1 392
2 94
3 49
3 32
4 459
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-01-16 21:40:40

读取数据:

代码语言:javascript
复制
foo <- read.table(text="1 349
  1 393
  1 392
  4 459
  3 49
  3 32
  2 94")

和排序:

代码语言:javascript
复制
foo[order(foo$V1),]

这依赖于这样一个事实,即order保持关系的原始顺序。参见?order

票数 52
EN

Stack Overflow用户

发布于 2013-01-16 22:46:21

使用key=V1创建data.table会自动为您完成此操作。使用斯蒂芬的data foo

代码语言:javascript
复制
> require(data.table)
> foo.dt <- data.table(foo, key="V1")
> foo.dt
   V1  V2
1:  1 349
2:  1 393
3:  1 392
4:  2  94
5:  3  49
6:  3  32
7:  4 459
票数 12
EN

Stack Overflow用户

发布于 2017-05-02 17:30:35

请注意,如果您希望值的顺序相反,您可以很容易地这样做:

代码语言:javascript
复制
> example = matrix(c(1,1,1,4,3,3,2,349,393,392,459,49,32,94), ncol = 2)
> example[order(example[,1], decreasing = TRUE),]
     [,1] [,2]
[1,]    4  459
[2,]    3   49
[3,]    3   32
[4,]    2   94
[5,]    1  349
[6,]    1  393
[7,]    1  392
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14359726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档