2016-03-22 9 views
1

質問は簡単です。私はdplyrの使用を開始しましたが、各行の値のランク付け方法の解決策を考え出すことはできません。究極の目標は、各値と各行にランクを割り当てることです。私は動作しませんでした次のことを試してみました:dplyrを使用してデータフレームの値を列方向にランク付けする方法は?

mat_agg %>% rowwise() %>% mutate_each(funs(rank)) 

例は次のとおりです。

matrix(c(1,0,0.5,0.5, 0, 1),nrow=2) 

望ましい結果は次のようになります。

matrix(c(1,3,2,2, 3, 1),nrow=2) 

私は非常に任意の助けに感謝します。ありがとうございました!

+3

doを使用しています。私は '?do 'で動作すると仮定します – akrun

+1

' '手配しましたか?ここでは[再現可能な例を作る方法]です(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5965451#5965451)。 –

+1

データフレームではなく行列を使って作業しているのであれば、おそらくdplyrを使いたくないかもしれません(実際の例がもっと複​​雑な場合もあります)。 –

答えて

2

apply()rank()を組み合わせて使用​​できます。私たちは降順を得るためにmを否定し、出力を転置して所望の構造を得る。我々はdplyrを使用している場合

t(apply(-m,1,rank)) 
#  [,1] [,2] [,3] 
#[1,] 1 2 3 
#[2,] 3 2 1 
1

は、matrixdata.frameに変換し、あなたのコードをテストするために他の人のための小さな再現性の例と期待される出力を示してくださいrowwise

library(dplyr) 
data.frame(m1) %>% 
     rowwise() %>% 
     do(data.frame(t(rank(-unlist(.))))) 
#  X1 X2 X3 
# (dbl) (dbl) (dbl) 
#1  1  2  3 
#2  3  2  1 
関連する問題