R用随机分类值替换DF的空列

时间:2018-02-08 20:12:26

标签: r random categorical-data

尝试通过随机分配人口统计值来替换人口统计值。

我可以通过执行以下操作获取空的性别数据行:

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))

这只分配给少数细胞但不是全部。

2 个答案:

答案 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)