2016-04-26 9 views
0

私の仕事では、性別で気温の平均を求めたいと思います。これはtapplyコマンドで行うことができます。また、私は平均コマンドを使用することはできません:FUN = function(x){}でtapplyを使用する

tapply(df$temperature,df$gender,FUN = function(x){sum(x)/length(df[,1])}) 

私は間違った結果を与えます。両方の性別の平均を見つけるのではなく、結果を2で割るだけです。 どうすれば修正できますか? 集約関数のすべてが正しい作品であるため:(X)/長さ(x)はその合計を確認

aggregate(df$temperature,by = list(df$gender),function(x){sum (x)/length(x)}) 
+2

'sum(x)/ length(x)'? –

+0

@jogo、 "また、私は平均コマンド" –

+2

'mymean < - function(x)sum(x)/ length(x)を使用することはできません。 ... FUN = mymean' – jogo

答えて

0

はここに行くための方法です:

set.seed(1) 
d<-data.frame(temperature=rnorm(1000,500,20), 
       gender=rep(c('M','F'),500)) 
:モックのデータセットを作成

カスタム平均関数を用いたタップを用いた性別による平均温度の計算

> tapply(d$temperature, d$gender, function(x){ sum(x)/length(x)}) 
     F  M 
500.0884 499.4457 

これが基本平均()関数と一致することを確認する:

> mean(d$temperature[d$gender=='F']) 
[1] 500.0884 
> mean(d$temperature[d$gender=='M']) 
[1] 499.4457 
関連する問題