このようなデータフレームがあって、条件c1とc2に基づいて何らかの集計をしたいとする。
また、データフレームはdfというオブジェクトに代入されているとする。
tapply
> with(df, tapply(v, list(c1, c2), mean)) 1 2 a 1.689910 2.563432 b 1.780409 2.568772
by
> with(df, by(v, list(c1, c2), mean)) : a : 1 [1] 1.68991 ----------------------------------------------------------------------------- : b : 1 [1] 1.780409 ----------------------------------------------------------------------------- : a : 2 [1] 2.563432 ----------------------------------------------------------------------------- : b : 2 [1] 2.568772
aggregate
> with(df, aggregate(v, list(c1, c2), mean)) Group.1 Group.2 x 1 a 1 1.689910 2 b 1 1.780409 3 a 2 2.563432 4 b 2 2.568772
dplyr(group_by, summarize)
> library(dplyr) > df %>% group_by(c1, c2) %>% summarize(mean(v)) Source: local data frame [4 x 3] Groups: c1 [?] c1 c2 mean(v) <fctr> <int> <dbl> 1 a 1 1.689910 2 a 2 2.563432 3 b 1 1.780409 4 b 2 2.568772
まとめ
Rでやるべき。