Rで複数条件抽出&集計

f:id:Rion778:20160714214916p:plain
このようなデータフレームがあって、条件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でやるべき。