2011-01-14 10 views
2

データ行列(行名と列名)があります。データの各列のドットチャートを作成し、各グラフでデータを最大から最小にソートして、これらのプロットを他のグラフの上に並べます。マトリックスの列を分割し、それぞれのソートされたドットチャートを図形に配置します。

私は次の行列があった場合たとえば、:

> X 
    W X Y  Z 
A 11.7 8.7 15.4 100.0 
B 18.1 11.7 9.0 13.6 
C 10.0 20.3 37.0 19.3 
D 41.0 30.9 20.0 35.1 
E 66.0 3.0 71.1 50.0 

を私はデータをソートして、4 dotcharts(コラム "W"、 "X"、 "Y"、 "Z")をやりたいです各チャートでは最大から最小に、チャートは他のチャートの上に配置されています。

question 4654181を参照してください、ソートが列ごとに異なるものになりますので、dotchart(X)が動作しないことに注意してください)

私はそれを行うことができるようになるRコマンドのシーケンスは何ですか?

答えて

6
apply(X, 2, sort) 
     W X Y  Z 
[1,] 10.0 3.0 9.0 13.6 
[2,] 11.7 8.7 15.4 19.3 
[3,] 18.1 11.7 20.0 35.1 
[4,] 41.0 20.3 37.0 50.0 
[5,] 66.0 30.9 71.1 100.0 

dotchart(apply(X, 2, sort)) 

alt text

EDIT:正しくソートラベルを追加するには、列の名前を()を使用する必要があり、その後順番()列の値によって編:

dotchart(apply(X, 2, sort), 
     labels=apply(X, 2, function(x) names(x)[order(x)]) 
     ) 

alt text

+0

行ラベル( "A"、 "B"、 "C"、 "D"、 "E")が破棄されていることを除けば、これは本当に近いです。したがって、古いラベル間のマッピングを行う方法はありません"A"、 "B"、 "C"、 "D"、 "E")およびth (「1」、「2」、「3」、「4」、「5」)、マッピングがあるグループから別のグループに変化するので、元の行ラベルを捨てることなく、類似したプロットを生成する方法はありますか? –

+0

@lorin:ここに行きます。 –

+0

完璧な、それはまさに私が探していたものです。 –

関連する問題