ich habe eine Frage zur Datensatzaufbereitung. In einer Umfrage wurden dieselben Personen zu zwei Messzeitpunkten zu einer Reihe verschiedener Variablen befragt. Dabei entstand ein Datensatz im Long-Format, d.h. Angaben jedes Teilnehmer/jeder Teilnehmerin werden in zwei Zeilen gespeichert. Jede Zeile repräsentiert die Angaben dieser Person zu dem jeweiligen Messzeitpunkt (siehe Beispiel). Personen haben dabei individuelle Teilnahmecodes. Derselbe Teilnahmecode zeigt somit an, dass es sich um Angaben der selben Person handelt.
Code: Alles auswählen
Teilnahmecode Messzeitpunkt Risikowahrnehmung ....
DB6M 1 6
DB6M 2 4
TH4D 1 2
TH4D 2 3
...
Code: Alles auswählen
Teilnahmecode Messzeitpunkt Risikowahrnehmung Risikowahrnehmung.complete
DB6M 1 6 1
DB6M 2 4 1
TH4D 1 2 1
TH4D 2 3 1
SU6H 1 NA 0
SU6H 2 3 0
VG9S 1 NA 0
VG9S 2 NA 0
...
Kann mir jemand sagen, wie ich das am besten programmiere?
Hier noch ein reproduzierbares Beispiel:
Code: Alles auswählen
data <- data.frame(
code = c("AH6M","AH6M","BD7M","BD7M","SH9L","SH9L"),
time = c(1,2,1,2,1,2),
risk = c(6,7,NA,3,NA,NA))
Ich habe bereits den Hinweis bekommen, dass sich dieses Problem womöglich recht einfach lösen lässt, indem man die ave()-Funktion benutzt. Ich komme jedoch nicht weiter beim Schreiben der Funktion, in der man noch festlegen müsste, dass eine 0 kodiert werden soll, falls es mind. ein NA gibt und eine 1, falls es kein NA gibt:
Code: Alles auswählen
dat$risk.complete <- ave(dat$risk, dat$code, FUN = function(x) ...)