首页 > 解决方案 > 用基于指标零和一的值填充 R 中的缺失向量

问题描述

我有一个长度为 n 的向量 r ,其中包含零和一。不可能全为零。此外,我也会有一个长度为 n 的向量 y,但是基于向量 r 中的零值,y 中的某些值会丢失。我必须用样本值替换 y 中的缺失值

例如,如果r = c(1,1,0)soy = c(3,2,NA)采样一个值 (8),则将 NA 替换为 8。向量r可能有两个零,所以我必须采样两个值。并用样本值替换 y 的两个缺失。

标签: r

解决方案


您可以将r向量转换为布尔值,as.logical然后使用它来索引y向量以进行替换。对于存在多个缺失值的情况,使用索引向量的总和指定 的size参数。sample我从 1:10 采样整数来说明这一点,因为您没有指定您从什么采样:

r <- c(1,1,0)
y <- c(3,2,NA)
idx <- !as.logical(r)
y[idx] <- sample(1:10, size = sum(idx))

r尽管您可以直接检查NA值,但该向量有点多余y

ifelse(is.na(y), sample(1:10), y)

推荐阅读