トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン 印刷

order()

auditR

データを並べ替える

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

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。一般的にこの表記方法は一度に記述できるので便利なようだが、可読性が悪くなるので、あまりお勧めしない。

参考

[オブジェクト操作]


Last updated 2016-04-20 | auditR (c) N.Nawata