23

私はマトリックスを持っています

df<-matrix(data=c(3,7,5,0,1,0,0,0,0,8,0,9), ncol=2)
rownames(df)<-c("a","b","c","d","e","f")

[,1] [,2]
a    3    0
b    7    0
c    5    0
d    0    8
e    1    0
f    0    9

そして、最初に列1で、次に列2で行列を降順に並べ替えて、行列を作成したいと思います

df.ordered<-matrix(data=c(7,5,3,1,0,0,0,0,0,0,9,8),ncol=2)
rownames(df.ordered)<-c("b","c","a","e","f","d")

   [,1] [,2]
 b    7    0
 c    5    0
 a    3    0
 e    1    0
 f    0    9
 d    0    8

これを達成する方法について何か提案はありますか? ありがとう。

4

3 に答える 3

31

order関数はそれを行う必要があります。

df[order(df[,1],df[,2],decreasing=TRUE),]
于 2012-08-22T16:28:26.367 に答える
5

order関数はあなたを助けます、これを試してください:

df[order(-df[,1],-df[,2]),] 
  [,1] [,2]
b    7    0
c    5    0
a    3    0
e    1    0
f    0    9
d    0    8

前のマイナスdfは、注文が減少していることを示します。同じ結果設定が得られますdecreasing=TRUE

df[order(df[,1],df[,2],decreasing=TRUE),]
于 2012-08-22T16:33:18.763 に答える