2016-05-27 10 views
3

Rの値をランク付けする簡単な方法があるかどうかは、メインランクとランク付けの2つの基準で判断しています。我々はrank(a)で絆を処理するためにbの情報を使用してaをランク付けしたいと、今Rの値を2つの基準(2番目のものはネクタイのもの)を使用してランク付けする簡単な方法はありますか?

a <- c(9,13,6,3,7,1,13) 
b <- c(1,4,3,6,5,7,2) 

ので、私たちは次のように終わる:

たとえば、我々は次の番号のセットがあるとし:

> 5 7 3 2 4 1 6 

Rで簡単に取得できますか?結束を扱うためのrankのオプションはそのための助けにはならない。

PS:そこrankとネクタイで同様の問題がすでにあるが、それは本当に、そのタイトルがとても示唆にもかかわらず、同じことを求めていないので、それは重複しません:Is there a simple way to rank on multiple criteria that preserves ties in R?

+0

回避策は、 'rank(a + b * sqrt(.Machine $ double.eps))'のように、 'b'に比例した非常に小さな値を加えることができます。もちろん、これは、 'a'の値が、追加された用語によってシャッフルされないように散在している場合にのみ機能します。 – nicola

答えて

2

を全て絆が実際に壊れていると仮定すると:

order(order(a, b)) 
#[1] 5 7 3 2 4 1 6 

おそらく、より効率的な選択肢があります。

+0

これは私の回避策よりはるかに優れています。それもかなり効率的だと思います。 – nicola

+0

@nicola私はそれが二度注文するのは好きではありません。私は 'order'への最初の呼び出しは中間のステップとして内部的に結果を生成するかもしれないと思います(私はソースを見ていませんでした)。 – Roland

+0

@Rolandそれは良い方法で*とても*シンプルです!ありがとう。だから、カスタムの 'order'コマンドを実装するほうがおそらくもっと効率的だということに同意します。しかし、これまでのところ、パフォーマンス面では私の場合は受け入れられるようです。唯一のことは、すべての絆が結びついていることは、すべての関係が「b」で再び結びついていない場合を意味しますか? – MAnd

関連する問題