首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tapply with FUN = function(x){}

使用tapply with FUN = function(x){}
EN

Stack Overflow用户
提问于 2016-04-26 11:21:22
回答 1查看 4.8K关注 0票数 1

在我的任务中,我想按性别来找出温度的平均值。我们可以通过命令来完成这个任务。此外,我也不被允许使用卑鄙的命令:

代码语言:javascript
复制
tapply(df$temperature,df$gender,FUN = function(x){sum(x)/length(df[,1])})

但它给了我错误的结果。它只差2的结果,而不是寻找两者的平均性别。我怎么才能解决呢?因为有了聚合函数,一切都是正确的:

代码语言:javascript
复制
  aggregate(df$temperature,by = list(df$gender),function(x){sum (x)/length(x)})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 14:24:49

确认sum(x)/length(x)是这里的方法:

创建模拟数据集:

代码语言:javascript
复制
set.seed(1)
d<-data.frame(temperature=rnorm(1000,500,20),
              gender=rep(c('M','F'),500))

用自定义平均函数tapply按性别计算平均温度

代码语言:javascript
复制
> tapply(d$temperature, d$gender, function(x){ sum(x)/length(x)})
       F        M 
500.0884 499.4457 

确认这与基mean()函数匹配:

代码语言:javascript
复制
> mean(d$temperature[d$gender=='F'])
[1] 500.0884
> mean(d$temperature[d$gender=='M'])
[1] 499.4457
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36863466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档