説明
ラジッド配列の各セルに指定した関数を適用する関数である。
一般的にラジッド配列(ragged array)と言えば、行ごとに要素数の異なる配列(row-ragged)や列ごとに要素数の異なる配列(column-ragged)などを指すが、Rでは例えば以下のようなものが例が考えられる。
(1) カテゴリーデータを列に含むデータフレームにおいて、各カテゴリーに含まれる要素数(行数)が異なるもの
(2) 異なる要素数の複数のベクトルを要素に持つリスト
tapply()はこのようなデータに対して関数を連続的に適用する関数である。例えば(1)のようなデータフレームに対して、カテゴリごとに平均値を求めるといった処理を行うことができる。
使用法
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
引数
X : 1つのアトミック・オブジェクト。通常はベクトル。
INDEX:Xと同じ長さの1つ以上のファクター型配列のリスト。要素はas.factor()によって型変換される。
FUN : 適応する関数名あるいはNULL。+, %*%, などの関数の場合、関数名をクオートまたはバッククオートで囲まなければならない。NULLの場合、tapply()が通常作り出す多次元配列をサブスクプトするために使用可能なベクトルを返す。
FUNに対するオプショナル引数:省略 → ヘルプの別項(Note section)を参照。
simplify:FALSEの場合, tapply()は”リストモード”の配列を返す。TRUE の場合(デフォルト)FUNがスカラー型の返り値を持つなら、tapply()は”スカラーモード”の配列を返す。
使用例
# 以下はカテゴリー変数を列に含むデータフレームに対してカテゴリーごとに平均値を求める例である
> data(warpbreaks)
# (1)tension列のグループ(L,M,H)ごとにbreaks列の平均値を求める
> tapply(warpbreaks$breaks, warpbreaks$tension, mean)
L M H
36.38889 26.38889 21.66667
# (2)wool列✕tension列のクロス表を作成し各セルごとの平均値を求める
> tapply(warpbreaks$breaks, list(warpbreaks$wool,warpbreaks$tension), mean)
L M H
A 44.55556 24.00000 24.55556
B 28.22222 28.77778 18.77778関連
[R]base::by() : データフレームを1つの因子型列に記録された水準でグループ分けし、各サブグループごとに関数を適用する関数
[R]psych::describeBy() : グループごとに要約統計量を出力する関数
コメント