トップ 一覧 検索 ヘルプ RSS ログイン 印刷

order()の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!データを並べ替える

データを大きさの順に並べ替えることは、監査では普通にある作業で、一般的ツール類で、列の見出しをクリックすると並びの大小が変わったりする機能がついたものはよく見かける。

Rには、View()関数を使うとデータが表形式で表示できるし、RStudioにもデータを表示する機能はあるが、データを見るだけではなく処理していくには、order()が便利。

order()は、データそのものを並べ替えないが、データを並べ替えた結果のインデックスを返してくる。身長の高い人の順に身長そのものを並べ替えるのではなく、ID番号を並べ替えるというイメージである。

 ranking <- order(df$fields, decreasing=T)  #rankingにインデックスが入る
 df[ranking, ]  #rankingに入ったインデックスを使って、dfを表示する

トップ10やボトム5などを表示したければ、おなじみのhead()、tail()を使う。
 head(df[ranking, ], 10)
 tail(df[ranking, ], 5)

具体的な数字で試すと、

 > a <- c(125,546,85,98)
 > order(a)
 [1] 3 4 1 2
 > a[order(a)]
 [1]  85  98 125 546
 
一度にやりたければ、
 df[order(df$field, decreasing=T),] # カンマを忘れないこと

とすれば、データフレームdfのフィールドfieldにつき、降順に並べることができる。なおデフォルトは昇順なので、入力しなければdecreasing=F。一般的にこの表記方法は一度に記述できるので便利なようだが、可読性が悪くなるので、あまりお勧めしない。

!参考

* sort()
* rank()

{{category オブジェクト操作}}