2016-06-12 6 views
0

行列またはデータフレームを2番目の行でソートするとします。 私は方法を見つける。特定の行によるソート行列またはデータフレーム

tt<-c(3,2,3,5,3,5,5,4,3,1,5,2,1,5,4,1,3,5,3,3) 
ff<-matrix(tt,nrow=5) 
gg<-t(ff) 
nn<-gg[order(gg[,2],decreasing = T),] 
ff<-t(nn) 
ff 

代替手段または提案はありますか?

+0

私が知る限り、 'order'は基底Rでのそのようなアクションのための優先メソッドです。複数の行でソートするのにも使用できます。 "巨大な"(> 1GBのデータセット)で作業している場合、 'data.table'パッケージと' setkey'関数を見てください。 – lmo

答えて

3

行列を2番目の行でソートするために行列を転置する必要はありません。列インデックスの2番目の行に基づいて順序を指定することも有効です。

ff[,order(ff[2,], decreasing = T)] 
    [,1] [,2] [,3] [,4] 
[1,] 5 1 3 5 
[2,] 5 3 2 2 
[3,] 4 5 3 1 
[4,] 3 3 5 5 
[5,] 1 3 3 4 
+1

なぜあなたはdownvotedを得たか分かりません。 OPの予想通りの結果となり、より単純なものになります。 – thelatemail

+0

ありがとうございます。私の間違いは 'ff [order(ff [2、]、decrease = T)] ' – imi

+0

@thelatemailでした。私は質問が非常に正常に見え、対処するための非常に標準的な方法があると思います。しかしそれはまたそれを見落とされた人々かもしれません。列を独立して並べ替えるか、行を並べ替えるか、独立して列を並べ替えるか、行列で並べ替える列で並べ替えるかは、ちょっと混乱します。しかし、data.frameクラスを依然として維持したい場合は、データフレーム内で唯一の操作が列でソートされます。 – Psidom

関連する問題