2017-01-18 15 views
1

行列内の列ベクトルのランクを実行したいと思います。R - 基本関数 - 行列内のベクトルのランク別観測

私はそれが出力変数のランクである必要があり、この

Date Obs  y1 y2 y3 
2014 1  12 15 43 
2014 2  43 23 6 
2013 1  15 4 91 
2013 2  17 50 8 

のようになります。名前と日付

> data <- matrix (c(12,43,15,17,15,23,4,50,43,6,91,8), nrow = 4, ncol = 3)

次の行列 "データ" を持っていますユニークな観察ごとに他の変数に対して(日付* Obs)

Date Obs  formula(y1) formula(y2) formula(y3) 
2014 1   3   2   1 
2014 2   1   2   3 
2013 1   2   3   1 
2013 2   2   1   3 

EDIT:単純マトリクス用@Tim Hoolihanとuser20650のおかげで、次のとおりです。 t(apply(data, 1, function(x) rank(-x)))

助けてくれてありがとう - 失われたのnoobから。

+1

それは 'サイドノートとして – akrun

+0

をrank'計算するための基準については明らかではない:この:' 1:長さ(データを[、 1]) 'は' data'が空のときや、noobからdplyr-userに卒業するときに壊れます。優先: 'seq_len(nrow(データ))' –

+1

Chrischeese、あなたは混乱のためにしてください – user20650

答えて

0

使用して行を反復処理し、それらをランク付けするために適用されます。

> data <- matrix (c(12,43,15,17,15,23,4,50,43,6,91,8), nrow = 4, ncol = 3) 
> t(apply(data, 1, function(x) rank(-x))) 
    [,1] [,2] [,3] 
[1,] 3 2 1 
[2,] 1 2 3 
[3,] 2 3 1 
[4,] 2 1 3 
+0

こんにちは、ありがとう、結果は次のとおりです:' t(apply(data、1、function(x)rank (-x))) 'となります。乾杯。 – Chrisftw

+0

@Chrischeeseありがとう、私はあなたが行ではなく、列でランク付けされていたことを認識していませんでした。私の例を更新しました。あなたの問題を解決するので、答えとしてマークしてください。 –

関連する問題