Опция будет
i1 <- df$var1 == df[3:4]
df$var_match <- as.integer(!rowSums(!i1, na.rm = TRUE) *
NA^(rowSums(is.na(i1)) == 2))
df$var_match
#[1] 0 0 0 1 1 NA
data
df <- structure(list(ID = 1:6, var1 = c("abc", "def", "ghi", "jkl",
"jkl", "abc"), var2 = c("def", "xyz", "abc", "jkl", "jkl", NA
), var3 = c("abc", "jkl", "abc", "jkl", NA, NA)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))