You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算经重新编码分组后的各性别组age均值?

问题:重新分组后计算分组的age均值

已有数据示例:

age gender
20    0
27    0
23    1
...   ...

已执行的R代码:

library(plyr)
gender <- revalue(as.factor(gender), c("0"="F", "1"="M"))
table(gender )

执行结果:

gender
F    M 
30   41 

现需计算F、M两个性别组各自的age均值,该如何操作?


解答

这里提供几种实用的实现方式:

方法1:基于已加载的plyr包实现

因为你已经加载了plyr包,直接用ddply函数就能按分组计算均值,注意要确保gender和age在同一个数据框中(假设你的数据集名为df):

library(plyr)
# 先将gender转换并添加到数据框中
df$gender <- revalue(as.factor(df$gender), c("0"="F", "1"="M"))
# 按gender分组计算age均值
age_group_mean <- ddply(df, .(gender), summarise, mean_age = mean(age, na.rm = TRUE))
# 查看结果
print(age_group_mean)

提示:na.rm = TRUE用于忽略缺失值,避免计算出错,若数据无缺失可省略。

方法2:使用基础R函数tapply

无需额外加载包,用基础R的tapply即可快速实现:

# 转换gender分组
gender <- revalue(as.factor(df$gender), c("0"="F", "1"="M"))
# 按分组计算均值
age_group_mean <- tapply(df$age, gender, mean, na.rm = TRUE)
print(age_group_mean)

方法3:使用dplyr包(现代tidy风格)

如果偏好更简洁的tidy语法,可以使用dplyr包:

library(dplyr)
df <- df %>%
  # 重新编码gender分组
  mutate(gender = recode_factor(gender, "0" = "F", "1" = "M")) %>%
  # 按gender分组
  group_by(gender) %>%
  # 计算均值
  summarise(mean_age = mean(age, na.rm = TRUE))
print(df)

内容的提问来源于stack exchange,提问作者Talkthattalk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:35:17