Мы можем использовать %in%
:
df[-1] <- +(sapply(df[-1], `%in%`, x = df$C1))
df
# C1 C2 C3 C4 C5
#1 Apple 0 1 0 0
#2 Banana 0 0 1 1
#3 Orange 0 1 1 0
данные
df <- structure(list(C1 = structure(1:3, .Label = c("Apple", "Banana",
"Orange"), class = "factor"), C2 = c(NA, NA, NA), C3 = structure(c(1L,
2L, NA), .Label = c("Apple", "Orange"), class = "factor"), C4 = structure(c(1L,
2L, NA), .Label = c("Banana", "Orange"), class = "factor"), C5 = structure(c(1L,
NA, NA), .Label = "Banana", class = "factor")), class = "data.frame",
row.names = c(NA, -3L))