если еще в цикле в R - PullRequest
       3

если еще в цикле в R

0 голосов
/ 22 мая 2018

Я хочу создать переменную область на основе ряда похожих переменных от zipid1 до zipid26.Мой текущий код выглядит так:

dat$region <- with(dat, ifelse(zipid1 == 1, 1, 
                                         ifelse(zipid2 == 1, 2, 
                                                ifelse(zipid3 == 1, 3,
                                                       ifelse(zipid4 == 1, 4,
                                                              5)))))

Как я могу написать цикл, чтобы избежать ввода с zipid1 до zipid26?Спасибо!

1 Ответ

0 голосов
/ 22 мая 2018

Мы подставляем столбцы '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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...