2016-04-26 62 views
0

tapply的用法在我的任務中,我想查找性別的溫度的平均值。我們可以通過tapply命令來做到這一點。我也不允許使用mean命令:FUN = function(x){}

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

但它給了我錯誤的結果。它只是將結果除以2,而不是找到兩性的均值。 我該如何解決這個問題? 由於與聚合函數一切正常正確:

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

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

+0

@jogo,「我也不允許使用mean命令」 –

+2

'mymean < - function(x)sum(x)/ length(x); ... FUN = mymean' – jogo

回答

0

確認該款項(X)/長度(x)是去這裏的路:

創建一個模擬數據集:

set.seed(1) 
d<-data.frame(temperature=rnorm(1000,500,20), 
       gender=rep(c('M','F'),500)) 

通過使用tapply與自定義功能性別意味着計算平均溫度

> 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 
相關問題