No.21992 Rのソート(複数キー)  【奈々瀬】 2016/05/04(Wed) 10:26

青木先生,
お世話になります,奈々瀬と申します。
どうぞよろしくお願いいたします。

−−−
複数キーを指定する,Rのソートについてご教示をいただけたら助かります。

ネットで調べましたら,sort.list関数を利用する例が幾つかありました。
私が所望する記載がありませんでしたので,投稿させていただきます。

添付ファイルに,簡単なサンプルデータをお示しをします。

このデータで,例えば,以下の3つの項目
「経済力」「性格」「容姿」の優先順に降順ソートした場合の
Rプログラムを例示していただけると助かります。

つまり,
まずは「経済力」で降順ソートし,
「経済力」の値が同じ場合には,「性格」で降順ソートし,
さらに,「性格」の値が同じ場合には,「容姿」で降順ソートします。

どうぞ,よろしくお願いいたします。
失礼いたします。


No.21995 Re: Rのソート(複数キー)  【青木繁伸】 2016/05/05(Thu) 06:57

order 関数を使います(詳しい説明は ? order で)

order の引数で,優先順に指定します。降順でソートする変数は - を付けてやればよいですね。
d = data.frame(
経済力=c(2,1,2,3,2,1,1,4,4,1,3,2,2,1,2),
性格 =c(5,4,5,5,5,5,4,5,5,3,5,5,4,4,5),
容姿 =c(5,2,4,4,3,5,3,2,4,4,4,4,3,4,5))
d[order(-d$経済力, -d$性格, -d$容姿),]
結果
経済力 性格 容姿
9 4 5 4
8 4 5 2
4 3 5 4
11 3 5 4
1 2 5 5
15 2 5 5
3 2 5 4
12 2 5 4
5 2 5 3
13 2 4 3
6 1 5 5
14 1 4 4
7 1 4 3
2 1 4 2
10 1 3 4
plyr パッケージの arrange 関数を使うというのもありますが,わざわざそんなもの使わなくても。

No.21996 御礼: Re: Rのソート(複数キー)  【奈々瀬】 2016/05/05(Thu) 08:15

青木先生,
お世話になります,奈々瀬と申します。

お休みのところ,ご教示をいただき,大変に助かりました!

先生がお書きになられたように,plyrパッケージ,dplyrパッケージを
使う記事を検索で見つけましたが,
Rだから,きっとorder関数を利用するだけで対応できるはずだ,
という強い期待感がありましたので,投稿させていただきました。

やはり,Rです。

貴重なご教示をいただき,誠にありがとうございました。
心から御礼を申し上げます。

失礼いたします。

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る