Alternativas às instruções ifelse aninhadas em R
Suponha que tenhamos os seguintes dados. As linhas representam um país e as colunas (in05:in09
) indicam se esse país estava presente em um banco de dados de interesse no ano determinado (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)
Eu quero criar uma variávelfirstyear
que indica o primeiro ano em que o país esteve presente no banco de dados. No momento, faço o seguinte:
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)))))
O código acima já não é muito bom e meu conjunto de dados contém muitos mais anos. Existe uma alternativa, usando*apply
funções, loops ou qualquer outra coisa, para criar estefirstyear
variável?