我有一个矩阵,有两列以下形式:
1 349
1 393
1 392
4 459
3 49
3 32
2 94
Run Code Online (Sandbox Code Playgroud)
我想基于第一列按递增顺序对此矩阵进行排序,但我想在第二列中保留相应的值.
输出看起来像这样:
1 349
1 393
1 392
2 94
3 49
3 32
4 459
Run Code Online (Sandbox Code Playgroud)
S. *_*ica 48
阅读数据:
foo <- read.table(text="1 349
1 393
1 392
4 459
3 49
3 32
2 94")
Run Code Online (Sandbox Code Playgroud)
排序:
foo[order(foo$V1),]
Run Code Online (Sandbox Code Playgroud)
这依赖于order
保持原始秩序联系的事实.见?order
.
Aru*_*run 12
创建一个data.table
with会key=V1
自动为您完成此操作.使用Stephan的数据foo
> 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
Run Code Online (Sandbox Code Playgroud)
小智 5
请注意,如果您想按相反的顺序获取值,则可以轻松地做到这一点:
> 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
Run Code Online (Sandbox Code Playgroud)