複数の基準とties.methodを持つランク関数(または類似のもの)を使用する方法はありますか?R:2つの変数とties.method randomを持つランク関数
通常、ベクトルの値をランク付けするためにランクが使用され、タイがある場合は、「平均」、「ランダム」、「最初」など)のいずれかを使用できます。しかし、行列の列をランク付けするときには、複数の列を使用したいと考えていますと tiesメソッドの1つです。
最小限例:
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y <- c(1, 4, 5, 5, 2, 8 ,8, 1,3, 3)
z <- c(0.2, 0.8, 0.5, 0.4, 0.2, 0.1, 0.1, 0.7, 0.3, 0.3)
m <- cbind(x=x,y=y, z=z)
私は上記のマトリックスにy
- 値をランク付けしたい想像してみてください。しかし、結びついている場合は、機能にz
の値を見てほしい。それ以降の結び付きがある場合は、ties.method = "random"
のパラメータを使用します。
x y z
[1,] 1 1 0.2
[2,] 8 1 0.7
[3,] 5 2 0.2
[4,] 9 3 0.3
[5,] 10 3 0.3
[6,] 2 4 0.8
[7,] 4 5 0.4
[8,] 3 5 0.5
[9,] 6 8 0.1
[10,] 7 8 0.1
しかし、それはまた、このかもしれない:すなわち
は、可能な結果があり得る第四及び第五行はちょうど第として(異なる方法
x y z
[1,] 1 1 0.2
[2,] 8 1 0.7
[3,] 5 2 0.2
[4,] 10 3 0.3
[5,] 9 3 0.3
[6,] 2 4 0.8
[7,] 4 5 0.4
[8,] 3 5 0.5
[9,] 7 8 0.1
[10,] 6 8 0.1
お知らせ第10回)。上記の結果はorder
-function(つまりm[order(m[,2], m[,3], sample(length(x))),]
ですが、ソートされた行列のインデックスではなく、ランク値を受け取ることを希望しています)
なぜ私がランク値を必要とする、お気軽に、私は余分な詳細と質問を編集します今の私は、最小限の例がそうなると思う
EDIT:。。。@alistaireが指摘したように行列に変更されたデータフレーム
明確にするために、 'cbind'は、data.frameではなく行列を作成します。 data.frameが必要な場合は、 'data.frame'を使います。 – alistaire
@alistaire、あなたは正しいです、明確化のためにありがとう! –