Альтернативы вложенным операторам ifelse в R
Предположим, у нас есть следующие данные. Строки представляют страну и столбцы (in05:in09
) укажите, присутствовала ли эта страна в базе данных, представляющей интерес в данном году (2005:2009
).
id <- c("a", "b", "c", "d")
in05 <- c(1, 0, 0, 1)
in06 <- c(0, 0, 0, 1)
in07 <- c(1, 1, 0, 1)
in08 <- c(0, 1, 1, 1)
in09 <- c(0, 0, 0, 1)
df <- data.frame(id, in05, in06, in07, in08, in09)
Я хочу создать переменнуюfirstyear
который указывает на первый год, в котором страна присутствовала в базе данных. Прямо сейчас я делаю следующее:
df$firstyear <- ifelse(df$in05==1,2005,
ifelse(df$in06==1,2006,
ifelse(df$in07==1, 2007,
ifelse(df$in08==1, 2008,
ifelse(df$in09==1, 2009,
0)))))
Приведенный выше код уже не очень хорош, и мой набор данных содержит еще много лет. Есть ли альтернатива, используя*apply
функции, циклы или что-то еще, чтобы создать этоfirstyear
переменная?