Ich habe einen Längschnittsdatensatz zu zwei Messzeitpunkten, indem jeder Teilnehmer zwei Zeilen hat. Die erste Zeile speichert die die Angaben des Teilnehmenden aus der ersten Befragung und die zweite Zeile speichert die Antworten desselben Teilnehmenden aus der ersten Befragung. Hier ein Beipiel.
Code: Alles auswählen
dat<-data.frame(
"id" = c("A","A","B","B","C","C"),
"time" = c("1", "2","1", "2","1","2")
"gender" = c("male","male","female", "NA","NA","male"))
Ich würde daher gern eine neue Variable bilden, in der die NAs mit den Angaben aus erster oder zweiter Befragung ausgefüllt werden, jenachdem, an welcher Stelle es angegeben wurde.
Ich habe bereits versucht die ave Funktion zu verwenden, aber da die Variable gender nicht numerisch ist, bekomme ich da eine Fehlermeldung.
Für numerische Variablen haben diese Befehle in der Vergangenheit funktioniert:
Code: Alles auswählen
dat$mod_gender <- ave(dat$gender, dat$id, FUN=function(x) x[1])
dat$mod_gender[is.na(dat$mod_gender)] <- ave(dat$gender[is.na(dat$mod_gender)], dat$id, FUN=function(x) x[2])