Мы создаем логический вектор и затем заменяем его, используя другое условие, созданное с помощью rowSums
i1 <- is.na(df1$cam_v) # logical index of NA elements in 'cam_v'
# assign the values 0 or 1 based on the occurrence of 1 in
# either one of the columns from 2 to 4
df1$cam_v[i1] <- +(rowSums(df1[i1, 2:4] > 0) > 0)
data
df1 <- structure(list(id = c(100078L, 100079L, 100081L, 100085L, 100087L,
100088L, 100091L, 100094L, 100095L, 100096L, 100098L, 100099L,
100102L, 100103L, 100104L, 100106L, 100108L, 100109L, 100112L,
100113L, 100114L, 100116L, 100117L, 100118L), othermood_v = c(0L,
0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 0L), rass_v = c(0L, 0L, 0L, 1L, 1L, 0L,
1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 1L), gcs_v = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L), cam_v = c(NA,
NA, NA, NA, NA, NA, 2L, NA, NA, NA, 2L, NA, NA, NA, 2L, NA, NA,
NA, NA, 1L, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-24L))