2017-01-07 7 views
0

応答変数の平均値を取得したいと思います。特定のレベルの1因子、たとえばconditionに対して任意にvalueと呼びます。特定のレベルの別の因子、たとえばtrain2因子のレベルによる平均

私はmean(data$value[data$condition=="a"])グループaの値の平均値を得るための一つの方法ですが、私の質問は、条件aためvalueの平均値を求めると、言う方法で、電車cことを理解しています。 mean(data$value[data$condition=="a"])と同様のインデックス構造を使用したいと考えています。

私は例として、mean(data$value[data$condition=="a"][data$train=="c"])を試しましたが、うまくいかないようです。何か案は?

+2

は、論理_and_を持つ2つの条件を組み合わせる: だからあなたの結果は

tapply(data$value, data$condition, mean) 

いくつかの簡単なマイクロベンチマークテストのようになります」== '平均(データ$値[データ$条件"&data $ train ==" c "])'? – lukeA

+0

または、質問が不正確であるように見えるので、グループ別に平均を計算しようとしています。そのような場合、 'by()'関数を使うことができます: 'by(data $ value、data $ condition、mean)'。 – kaksat

答えて

0

byコマンドはkaksatが提案する良いオプションですが、より速いオプションはtapplyです。

x = c(rnorm(5), runif(5)) 
y = rep(c('a','b'), each = 5) 

microbenchmark(
    by(x, y, mean) 
) 
Unit: microseconds 
      expr  min  lq  mean median  uq  max neval 
by(x, y, mean) 266.648 284.1415 300.5616 292.702 306.256 671.369 100 
microbenchmark(
    tapply(x,y,mean) 
) 
Unit: microseconds 
       expr min  lq  mean median  uq  max neval 
tapply(x, y, mean) 83.108 85.584 92.65721 87.3725 97.2045 284.738 100 
関連する問題