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

如何在R中基于性别占比与年龄均值进行缺失值插补?

R中按性别占比与年龄均值插补缺失值

首先需要把数据里的空格形式缺失值转换为R标准的NA,方便后续处理:

# 替换空格为NA
Data2$Gender[Data2$Gender == " "] <- NA
Data2$Age[is.na(Data2$Age)] <- NA

接下来分两步完成缺失值插补:

1. 插补性别(Gender)缺失值

已知女性占比60%、男性占比40%,按此比例随机为缺失的Gender赋值:

# 统计性别缺失的数量
missing_gender_num <- sum(is.na(Data2$Gender))

# 按指定比例生成随机性别
filled_gender <- sample(c("Female", "Male"), 
                        size = missing_gender_num, 
                        replace = TRUE, 
                        prob = c(0.6, 0.4))

# 将生成的性别赋值回数据框
Data2$Gender[is.na(Data2$Gender)] <- filled_gender

2. 插补年龄(Age)缺失值

根据已知的性别对应年龄均值,为缺失的Age赋值:

# 男性缺失年龄赋值为33
Data2$Age[is.na(Data2$Age) & Data2$Gender == "Male"] <- 33

# 女性缺失年龄赋值为39
Data2$Age[is.na(Data2$Age) & Data2$Gender == "Female"] <- 39

完整运行代码

整合所有步骤的完整代码如下:

# 原始数据构建
Gender <- c("Male", " ", " ", "Female", "Female", " ",  " ", "Male", " ", "Female")
Age <- c(' ', 33, 33, 39, 39, 33,33, 33, 32, 39)
Data2 <- data.frame(Gender, Age)
Data2$Age <- as.numeric(Data2$Age)
Data2$Gender <- as.character(Data2$Gender)

# 替换空格为NA
Data2$Gender[Data2$Gender == " "] <- NA
Data2$Age[is.na(Data2$Age)] <- NA

# 插补性别
missing_gender_num <- sum(is.na(Data2$Gender))
filled_gender <- sample(c("Female", "Male"), 
                        size = missing_gender_num, 
                        replace = TRUE, 
                        prob = c(0.6, 0.4))
Data2$Gender[is.na(Data2$Gender)] <- filled_gender

# 插补年龄
Data2$Age[is.na(Data2$Age) & Data2$Gender == "Male"] <- 33
Data2$Age[is.na(Data2$Age) & Data2$Gender == "Female"] <- 39

# 查看处理后的数据
print(Data2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:16:12