从列中获取特定于“ NA”值的预测

时间:2019-09-02 16:31:43

标签: r

我的数据如下:

     v1 v2 v3 v4     pred1    pred2
1  1908  5 10  2 10.000000  2.00000
2  1908  4 15  5 15.000000  5.00000
3  1908  8 14  4 14.000000  4.00000
4  1908  1 NA  9 11.230271  9.00000
5  1908  9 NA 14  9.942911 14.00000
6  1908  7  8 17  8.000000 17.00000
7  1908  6 NA  8  7.881931  8.00000

我想提取与其中具有NA值的列对应的preds。也就是说,pred1是使用v3列获得的,我想提取值{{ 1}}和11.230271以及9.942911列中具有7.881931值的NA

因此,我将得到类似v3的内容,其中最后一个值11.230271, 9.942911, 7.881931, 7.08919来自7.08919,该值基于pred2数据并具有v4NA

数据:

row12

1 个答案:

答案 0 :(得分:1)

我们可以根据另一列进行过滤,subset感兴趣的列

subset(data, is.na(v3), select = c("pred1", "pred2"))

如果我们需要'v3','v4'中相应的NA元素的值

out <- Map(function(x, y) y[is.na(x)], data[3:4], data[5:6])
out
#$v3
#[1] 11.230271  9.942911  7.881931

#$v4
#[1] 7.08919

然后,通过vector设置

将值作为单个unlist获得
unlist(out, use.names = FALSE)

或使用map2中的purrr

library(purrr)
map2(data[3:4], data[5:6], ~ keep(.y, is.na(.x)))