尝试通过随机分配人口统计值来替换人口统计值。
我可以通过执行以下操作获取空的性别数据行:
df$gender[df$gender == "",]
user_id, name, age, gender
001, xyz, 23,
004, abc, 32,
我想随机分配性别:
sample(c('male', 'female'), nrow(df$gender[df$gender == ""]), replace=TRUE, prob=c(0.5, 0.5))
尝试了以下内容:
df$gender[df$gender == ""] <- sample(c('male', 'female'), nrow(df$gender[df$gender == ""]), replace=TRUE, prob=c(0.5, 0.5))
这只分配给少数细胞但不是全部。
答案 0 :(得分:2)
使用以下示例:
rand_gender <- sample(c('m', 'f'), nrow(df), replace=TRUE, prob=c(0.5, 0.5))
我建议创建一个长度为nrow的向量:
df$gender <- ifelse(df$gender=="", rand_gender, df$gender)
仅在情况下取代&#34;性别&#34;是空的:
<separator/>
答案 1 :(得分:1)
您应该使用length
。由于您正在对df$gender[df$gender == ""]
进行子集化,因此df$gender
会返回一个向量。您也不需要probs = c(0.5, 0.5)
,因为sample
默认使用50 {50,因为您只给它两个选项。如果您希望将男性/女性分成70/30,则可以使用probs
。
df$gender[df$gender == ""] <- sample(c('male', 'female'), length(df$gender[df$gender == ""]), replace=TRUE)