以前から気になっていた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 件のコメント:
コメントを投稿