2

注文のエクイティをランク付けしようとしています (たとえば、返品による)。その結果、(各行の最後に移動された) NA を適切に処理して、昇順/降順 (このランク順関数のパラメーター) で株式の名前を含むテーブルを受け取りたいと思います。これを行うためのエレガントな方法が本当にわかりません。

以下は私が欲しいものの例です:

これは、さまざまな時点でのいくつかのプロパティを表す xts オブジェクトのコアデータです。

           john    joe     tina    jack    suzie   sasha   sven    luca   
2003-05-29 1       2       3       4       5       6       7       8  
2003-06-27 2       3       4       5       6       7       8       1  
2003-07-30 3       4       5       6       7       8       1       2
2003-07-31 NA      2       3       4       5       6       1       NA

各行 (日付ごと) に、列 1 に (プロパティに基づいて) ランク付けされた前のデータフレームの列名を表示するデータフレームが必要です。 NA を最後 (最後の 2 列) に移動するかスキップするケースが必要です...

           [,1]    [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]   
2003-05-29 "john"  "joe"   "tina"  "jack"  "suzie" "sasha" "sven"  "luca"  
2003-06-27 "luca"  "john"  "joe"   "tina"  "jack"  "suzie" "sasha" "sven"
2003-07-30 "sven"  "luca"  "john"  "joe"   "tina"  "jack"  "suzie" "sasha"
2003-07-31 "sven"  "joe"   "tina"  "jack"  "suzie" "sasha" "john"  "luca" 

よろしくお願いします。Rの初心者であるため、これは私にとって難しい問題です...

よろしく、
サモ。

4

1 に答える 1

1

mが元の行列 (つまり、xts のコアデータ) であるとします。次に、必要なものを取得できます。

> nams <- colnames(m)
> t( apply(m, 1, function(r) nams[ order(r) ] ) )
           [,1]   [,2]   [,3]   [,4]   [,5]    [,6]    [,7]    [,8]   
2003-05-29 "john" "joe"  "tina" "jack" "suzie" "sasha" "sven"  "luca" 
2003-06-27 "luca" "john" "joe"  "tina" "jack"  "suzie" "sasha" "sven" 
2003-07-30 "sven" "luca" "john" "joe"  "tina"  "jack"  "suzie" "sasha"
2003-07-31 "sven" "joe"  "tina" "jack" "suzie" "sasha" "john"  "luca" 

シーケンスが減少しない順序になるように ベクトルをベクトルにorder(r)変換することに注意してください。デフォルトでは、NA を最後にプッシュします。rpr[p[1]], r[ p[2] ], r[ p[3] ], ...

于 2011-02-21T21:01:33.037 に答える