Это даст вам то, что вы хотите:
df[!is.na(df$Var4),]["Var3"] <- NA
# Var1 Var2 Var3 Var4
# 1 a a <NA> No
# 2 b c <NA> Yes
# 3 a b Yes <NA>
# 4 c a Yes <NA>
# 5 b b <NA> Yes
Данные
df <- structure(list(Var1 = structure(c(1L, 2L, 1L, 3L, 2L), .Label = c("a",
"b", "c"), class = "factor"), Var2 = structure(c(1L, 3L, 2L,
1L, 2L), .Label = c("a", "b", "c"), class = "factor"), Var3 = structure(c(2L,
1L, 2L, 2L, 1L), .Label = c("No", "Yes"), class = "factor"),
Var4 = structure(c(1L, 2L, NA, NA, 2L), .Label = c("No",
"Yes"), class = "factor")), class = "data.frame", row.names = c(NA,
-5L))