根据查找中出现的 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
我想根据 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