回答:
aggregate
おそらくあなたが探している解決策だと思いますが、考えられるすべての因子の組み合わせの明示的なリストを作成したい場合は、expand.grid
それを行います。例えば
> expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),
sex = c("Male","Female"))
height weight sex
1 60 100 Male
2 65 100 Male
...
30 80 100 Female
31 60 150 Female
次に、結果のデータフレームの各行をループして、元のデータからレコードを引き出します。
これは、複数の要約統計量を返し、長い計算の進行状況バーを生成するという利点を持つplyrソリューションです。
library(ez) #for a data set
data(ANT)
cell_stats = ddply(
.data = ANT #use the ANT data
, .variables = .(cue,flanker) #uses each combination of cue and flanker
, .fun = function(x){ #apply this function to each combin. of cue & flanker
to_return = data.frame(
, acc = mean(x$acc)
, mrt = mean(x$rt[x$acc==1])
)
return(to_return)
}
, .progress = 'text'
)
他の提案に加えてdescribe.by()
、psych
パッケージ内の関数が役立つ場合があります。因子変数のレベル全体の数値変数に関する要約統計を表示するために使用できます。
私は個人的にcast()
、reshapeパッケージのシンプルさが気に入っています。
library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))
library(doBy)
存在するsummaryBy()
機能、例えば
summaryBy(DV1 + DV2 ~ Height+Weight+Sex,data=my.data)