Alternative zu geschachtelten ifelse-Anweisungen in R

Angenommen, wir haben die folgenden Daten. Die Zeilen repräsentieren ein Land und die Spalten in05:in09) Geben Sie an, ob dieses Land im angegebenen Jahr in einer Datenbank von Interesse vorhanden war (@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)

Ich möchte eine Variable erstellenfirstyear gibt das erste Jahr an, in dem das Land in der Datenbank vorhanden war. Im Moment mache ich folgendes:

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)))))

Der obige Code ist schon nicht sehr schön, und mein Datensatz enthält noch viele Jahre. Gibt es eine Alternative, mit*apply Funktionen, Schleifen oder etwas anderes, um dieses @ zu erstellfirstyear variable?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage