tidyverse中group_by与summarise处理因子变量失效问题咨询
问题产生原因
你的原始gender列存储的是数值1和2,在调用factor()函数转换因子时,你直接将levels参数设置为了字符串"male"和"female",和原始数据的取值完全不匹配,R无法找到对应匹配项,会把所有gender值转换为NA,因此分组统计时只会生成唯一的NA分组,计算的结果就是整体age的均值。
解决方法
你需要把原始数值和对应的性别标签做关联,调整因子转换逻辑即可,有两种常用实现方式:
- 方式1:保留原始数值为因子levels,通过labels参数映射性别标签
data <- data%>% mutate(gender = factor(gender, levels = c(1,2), labels = c("male", "female")))
- 方式2:先将原始数值替换为对应的性别文本,再转换为因子
data <- data%>% mutate(gender = dplyr::case_match(gender, 1 ~ "male", 2 ~ "female"), gender = factor(gender, levels = c("male", "female")))
调整后再运行分组统计代码即可得到预期结果:
# 运行结果示例 # A tibble: 2 × 2 gender mean <fct> <dbl> 1 male 21.2 2 female 23.2
内容的提问来源于stack exchange,提问作者Davin Díaz García
相关产品推荐
相关产品推荐

