【发布时间】:2021-06-23 13:41:50
【问题描述】:
我有一个包含 200 个变量的数据集,这些变量都有一些缺失值。 200 个变量中的每一个都有另一列,我想用它来估算缺失值。
示例数据:
have <- data.frame(ID = c(1:10), var1 = c(runif(7), NA, NA, NA), var1_fill = runif(10))
ID var1 var1_fill
1 1 0.68783885 0.140508053
2 2 0.74672512 0.001270443
3 3 0.09607276 0.917535359
4 4 0.03222775 0.363960434
5 5 0.03560543 0.901288399
6 6 0.46595122 0.725499220
7 7 0.42781890 0.781295939
8 8 NA 0.737999219
9 9 NA 0.456795266
10 10 NA 0.314562042
如果我想对一列进行估算,我会使用以下代码:
have$var1_imputed <- ifelse(is.na(have$var1) == T, have$var1_fill, have$var1)
ID var1 var1_fill var1_imputed
1 1 0.68783885 0.140508053 0.68783885
2 2 0.74672512 0.001270443 0.74672512
3 3 0.09607276 0.917535359 0.09607276
4 4 0.03222775 0.363960434 0.03222775
5 5 0.03560543 0.901288399 0.03560543
6 6 0.46595122 0.725499220 0.46595122
7 7 0.42781890 0.781295939 0.42781890
8 8 NA 0.737999219 0.73799922
9 9 NA 0.456795266 0.45679527
10 10 NA 0.314562042 0.31456204
我无法弄清楚如何编写一个循环来为 200 个变量执行此操作,因为我不能使用 $ 来引用列名。在实际数据集中,变量名称不遵循任何模式,如 var1、var2 等。但是,原始的 200 个变量位于第 7 到 206 列中,用于各自插补的列是 207 到 406。用于插补的列也与原始列具有相同的名称,但带有一个附加后缀,如示例中所示(var1 和 var1_fill)。
【问题讨论】:
标签: r loops imputation