Мы подставляем столбцы 'zipid', создаем логическую матрицу, сравнивая с 1 (== 1
), получаем индекс столбца значения TRUE
с max.col
(при условии, что в каждой строке есть только один 1)и назначьте его для создания 'region'
dat$region <- max.col(dat[paste0("zipid", 1:26)] == 1, "first")
Используя небольшой воспроизводимый пример
max.col(dat[paste0("zipid", 1:5)] == 1, "first")
data
dat <- data.frame(id = 1:5, zipid1 = c(1, 3, 2, 4, 5),
zipid2 = c(2, 1, 3, 5, 4), zipid3 = c(3, 2, 1, 5, 4),
zipid4 = c(4, 3, 6, 2, 1), zipid5 = c(5, 3, 8, 1, 4))