如何解决R Studio中mean函数计算年龄均值返回NA的问题?
解决分组平均年龄计算结果为NA的问题
你的核心问题是类型转换没有生效:代码里的as.numeric(moma_artists_alive$Age)仅执行了转换操作,但没有将转换后的数值存回原数据框的Age列,导致后续计算时Age依然是字符类型——字符型列调用mean()会直接返回NA,哪怕加了na.rm=TRUE也无效。
修正后的代码
# 先将Age列转换为数值型并覆盖原列 moma_artists_alive$Age <- as.numeric(moma_artists_alive$Age) # 再执行过滤、分组和平均计算 moma_artists_alive %>% filter(Alive == "Yes") %>% group_by(Gender) %>% summarise(av_age = mean(Age, na.rm = TRUE))
额外排查步骤
- 确认Age列类型:执行
class(moma_artists_alive$Age),确保输出是numeric - 排查转换产生的缺失值:如果转换后仍有大量NA,可能是原Age列包含非数值字符,可用以下代码定位异常值:
针对这些异常值做清洗(比如替换为合理数值或删除对应行)后再计算。# 找出无法转换为数值的原Age值 unique(moma_artists_alive$Age[is.na(as.numeric(moma_artists_alive$Age))])
内容的提问来源于stack exchange,提问作者Georgia Bingham
相关产品推荐
相关产品推荐

