根据查找中出现的 NA,用 NA 替换数据框中的值 table

replace values in a data frame with an NA based on the occurrence of NAs in lookup table

我想根据 NAs 在查找 [=18] 中的出现,用 NA 替换 R 中数据框中的值=] 就像下面的例子。

lookup <- data.frame(date1=c("2018-02-21", "2019-01-14", "2019-01-14", "2019-01-14"), 
                      date2=c("2018-08-22", "2019-01-14", "2019-01-14", NA), 
                      date3=c("2018-10-03", "2019-01-14", NA, NA), 
                      date4=c("2018-10-31", NA, NA, NA)
                      )

values <- data.frame(val1=c(22.2, 42.1, 38.2, 41.9), 
                      val2=c(23.8, 40.5, 38.5, 39.7), 
                      val3=c(24.2, 39.8, 40.2, NA), 
                      val4=c(27.0,40.1, NA, NA)
                      )

values_new <- data.frame(val1=c(22.2, 42.1, 38.2, 41.9), 
                     val2=c(23.8, 40.5, 38.5, NA), 
                     val3=c(24.2, 39.8, NA, NA), 
                     val4=c(27.0,NA, NA, NA)
                     )

我们可以使用

values2 <- values * NA^(is.na(lookup))

或使用

values[is.na(lookup)] <- NA

-正在检查

> identical(values, values_new)
[1] TRUE