3

我有一个包含 2000 个人的数据集。其中 330 个缺少我命名为 yn17(培养结果)的载体的数据。我想用“1”替换 330 个缺失 (NA) 值中的 17 个,表示结果是积极的文化。

这是我尝试使用的代码行:

y.n.17[sample(is.na(y.n.17),17)]=1

似乎每100个人用“1”代替17个人,无论他们是否是NA!我究竟做错了什么?

4

1 回答 1

1

n为 的长度,y.n.17为该向量中m < n的个数。是一个长度包含和的布尔向量。当您通过这样做从该向量中采样时,您将获得一个长度为随机选择或的向量。很可能很多,也可能只有一个。当您这样做时,该长度向量将被回收,因此会定期插入...NAis.na(y.n.17)nm TRUEn-m FALSEsample(is.na(y.n.17),17)17TRUEFALSEFALSETRUEy.n.17[sample(is.na(y.n.17),17)]=1171

你的意思是:

na.idx      <- which(is.na(y.n.17))
replace.idx <- head(sample(na.idx), 17)
y.n.17[replace.idx] <- 1

注意:doinghead(sample(na.idx), 17)通常比sample(na.idx, 17)当你的数据少于 17NA秒时它也能工作更健壮。但是,如果您希望您的代码在出现这种情况时出错,那么请执行y.n.17[sample(which(is.na(y.n.17)), 17)] <- 1.

于 2013-05-14T22:31:24.817 回答