2011年5月8日日曜日

R言語のby関数の調査

以前から気になっていたR言語のbyという関数についての調査。呼び出し方は以下の通り。

by(data, INDICES, FUN, ..., simplify = TRUE)

ヘルプによると、by関数はdataをINDICESごとにグループごとに区切り、FUNを適用するということになるらしい。また、返り値はsimplifyがTRUEで、かつ関数FUNが返す値がスカラーの場合はスカラー、それ以外はリスト形式になるようである。
試しにexample(by)としてみると、INDICESにリストを指定している場合がある。

by(warpbreaks[, 1], list(wool = wool, tension = tension), summary)

2番目の引数であるlistによって、複数の列をキーにしてdataを分けるということが可能である。ただし、注意しなければならないのは、listで指定した各列の直積をとってくるので、存在しない組み合わせに対してFUNを実行してしまう可能性がある。そういったことを避ける場合には、例えば複数列をpaste関数で一つの文字列にしてしまうといった操作が考えられる。以下のようにlistの内容を変更するのである。

by(warpbreaks[, 1], list(paste(wool,tension,sep="_"), summary)

過去にはグループごとに複数の統計量を返す方法の検討という記事を書いた。こちらではby関数を用いない場合の処理方法を紹介している。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計