Предположим, что у нас есть следующие данные. Строки представляют страну, а столбцы (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
?