★ 2つ以上のkeyでのソート in R ★

 136 2つ以上のkeyでのソート in R  ざーさい  2002/12/08 (日) 14:05
  143 Re: 2つ以上のkeyでのソート in R  jam  2002/12/08 (日) 20:45
   145 Reでーたソート in R(っていうかS)  ざーさい  2002/12/08 (日) 23:40
   144 Re^2: 2つ以上のkeyでのソート in R  青木繁伸  2002/12/08 (日) 22:59
    146 Re^3: 2つ以上のkeyでのソート in R  ざーさい  2002/12/08 (日) 23:43
     147 Re^4: 2つ以上のkeyでのソート in R と 「なんでもRで」  jam  2002/12/09 (月) 00:13
      151 Re: 「(ほとんど)なんでもRで」   ざーさい  2002/12/09 (月) 14:41
  142 Re: 2つ以上のkeyでのソート in R  青木繁伸  2002/12/08 (日) 20:32


136. 2つ以上のkeyでのソート in R  ざーさい  2002/12/08 (日) 14:05
青木先生 顔のプログラムありがとうございました。

さてしつもんですが,小生は行列やデータフレームのsortには

matrix<-matrix(rev(1:9),c(3,3))
matrix[order(matrix[,1]),] #一列目をキーにsort

などとしています。二つ以上のキーでsortしたいときにはどうすれば
いいのでしょうか?R-helpなどみてもわからないのでよろしくします。

     [このページのトップへ]


143. Re: 2つ以上のkeyでのソート in R  jam  2002/12/08 (日) 20:45
> matrix<-matrix(rev(1:9),c(3,3))
> matrix[order(matrix[,1]),] #一列目をキーにsort
>
> などとしています。二つ以上のキーでsortしたいときにはどうすれば
> いいのでしょうか?R-helpなどみてもわからないのでよろしくします。

青木先生への質問だと思いますが,たまたま知っている方法でしたのでお答えします。

matrix[order(matrix[,1],matrix[,2]),]

とorder()に2つ以上の引数を与えれば可能です。
上記の例では結果が変わりませんので,例は下記のようになります。
> x.mat <- matrix(c(2,2,1,1,2,1,2,1,1,2,3,4),ncol=3)
> x.mat
     [,1] [,2] [,3]
[1,]    2    2    1
[2,]    2    1    2
[3,]    1    2    3
[4,]    1    1    4

> x.mat[order(x.mat[,1]),]
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    1    4
[3,]    2    2    1
[4,]    2    1    2

> x.mat[order(x.mat[,1],x.mat[,2]),]
     [,1] [,2] [,3]
[1,]    1    1    4
[2,]    1    2    3
[3,]    2    1    2
[4,]    2    2    1

     [このページのトップへ]


145. Reでーたソート in R(っていうかS)  ざーさい  2002/12/08 (日) 23:40
> 青木先生への質問だと思いますが,たまたま知っている方法

ありがとうございます。

> matrix[order(matrix[,1],matrix[,2]),]
> とorder()に2つ以上の引数を与えれば可能です。

なるほど3つ以上やデータフレームでも可能なんですね,ようはorderに二つ以上の引数を与えればいい(タイのものにもorderをつけないといけないことはあるので当然ですね)んですね,お騒がせしました。
> data<-data.frame(x=rep(1:2,4),y=rep(1:4,2),z=rev(1:8))
> data
  x y z
1 1 1 8
2 2 2 7
3 1 3 6
4 2 4 5
5 1 1 4
6 2 2 3
7 1 3 2
8 2 4 1
> attach(data)
> data[order(x,y,z),]
  x y z
5 1 1 4
1 1 1 8
7 1 3 2
3 1 3 6
6 2 2 3
> data[order(x,rev(y),z),]
  x y z
7 1 3 2
3 1 3 6
5 1 1 4
1 1 1 8
8 2 4 1
4 2 4 5
6 2 2 3
2 2 2 7
2 2 2 7
8 2 4 1
4 2 4 5
これでエクセル並にはソートできるようになりました。

     [このページのトップへ]


144. Re^2: 2つ以上のkeyでのソート in R  青木繁伸  2002/12/08 (日) 22:59
フォローありがとうございます。
なるほど,こうやればいいのですね。
help もよく利用しないといけませんね。

> 青木先生への質問だと思いますが,たまたま知っている方法でしたのでお答えします。

回答者を指定しているようにみえても,誰が答えてもいいのですよ。
質問も,特定の回答者を指定しない方がいいですね。

     [このページのトップへ]


146. Re^3: 2つ以上のkeyでのソート in R  ざーさい  2002/12/08 (日) 23:43
> 回答者を指定しているようにみえても,誰が答えてもいいのですよ。
> 質問も,特定の回答者を指定しない方がいいですね。

失礼いたしました。指定したつもりはありませんでしが,今後注意いたします。

あと青木先生がおっしゃるようにorderのヘルプファイルを
読めばわかることでした。うかつな質問でした。

?sortででてくる see order にしたがえばよかったんですね,,,

     [このページのトップへ]


147. Re^4: 2つ以上のkeyでのソート in R と 「なんでもRで」  jam  2002/12/09 (月) 00:13
> > 回答者を指定しているようにみえても,誰が答えてもいいのですよ。
> > 質問も,特定の回答者を指定しない方がいいですね。
>
> 失礼いたしました。指定したつもりはありませんでしが,今後注意いたします。

 逆に気を使って頂いてしまい申し訳ありません。
 たまにこの掲示板を覗いていたのですが,発言することがほとんどなかったので,ちょっと恐縮していました。

 ところで,「なんでもRでやってしまおうか」というような書き込みを拝見しましたが,sortやorder・欠損値の処理など,データの1次加工はEXCELなどでやってしまったほうが楽で感覚的だったりします。だいぶRにも馴染んできましたが,それでもできるだけEXCEL上でデータ加工を終えておいて,Rに読み込ませています。
 そんなことは百も承知でいらっしゃると思いますが,それ以降の統計処理は「なんでもRで」に大賛成です。今更コメントですが・・・。

     [このページのトップへ]


151. Re: 「(ほとんど)なんでもRで」   ざーさい  2002/12/09 (月) 14:41
>  ところで,「なんでもRでやってしまおうか」というような書き込みを拝見しましたが,sortやorder・欠損値の処理など,データの1次加工はEXCELなどでやってしまったほうが楽で感覚的だったりします。だいぶRにも馴染んできましたが,それでもできるだけEXCEL上でデータ加工を終えておいて,Rに読み込ませ

そうですね,小生もまだRを使い始めたばかりなので,たとえば,どのようにperson-timeデータに変換するのかとかわからないので,SASでデータ変換したりしています。

     [このページのトップへ]


142. Re: 2つ以上のkeyでのソート in R  青木繁伸  2002/12/08 (日) 20:32
ちゃんとした方法があるかもしれませんが,私はまだ知りません。
データにもよるのでしょうが,以下のような場合には,ちょっと工夫すれば可能です。

たとえば,一桁の整数値しか取らない変数なら,15個程度までなら,X1,...,Xn という n 変数に対して,新たな変数 y を y=Σ 10^(i-1)*Xi のように作り,y をキーとしてソートすればいいです。要するに y はX1,...,Xn と一対一対応できるような数値にすればいいので,複数桁とか桁数がまちまちな場合でも可能です。小数点を含む変数でも,10^k 倍して小数点以下を含まない整数値にしてやればいいです。y は整数値とした方が無難で,y の桁数は 15 桁くらいと見た方が無難でしょう。

     [このページのトップへ]


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