2016-06-13 32 views
0

Ich versuche, ein Skript in r für den eq5d Fragebogen zu schreiben. Ich habe das Skript für spss online gefunden, aber ich lasse es lieber in r laufen, da ich alles andere in r mache. Das Skript in SPSS wäre also:EQ5D-Syntax in R, bedingte Anweisungen

COMPUTE EQ5D_D0=1. 
    IF (MAX(EQ5d1, EQ5d2, EQ5d3, EQ5d4, EQ5d5) > 1) EQ5D_D0 = EQ5D_D0 -.071. 
    IF (EQ5d1=2) EQ5D_D0 = EQ5D_D0 - 0.036. 
    IF (EQ5d1= 3) EQ5D_D0 = EQ5D_D0 - 0.161. 
    IF (EQ5d2 = 2) EQ5D_D0 =EQ5D_D0 - 0.082. 
    IF (EQ5d2 = 3) EQ5D_D0 =EQ5D_D0 - 0.152. 
    IF (EQ5d3 = 2) EQ5D_D0 =EQ5D_D0 - 0.032. 
    IF (EQ5d3 = 3) EQ5D_D0 =EQ5D_D0 - 0.057. 
    IF (EQ5d4 = 2) EQ5D_D0 =EQ5D_D0 - 0.086. 
    IF (EQ5d4 = 3) EQ5D_D0 =EQ5D_D0 - 0.329. 
    IF (EQ5d5 = 2) EQ5D_D0 =EQ5D_D0 - 0.124. 
    IF (EQ5d5 = 3) EQ5D_D0 = EQ5D_D0 - 0.325. 
    IF (MAX(EQ5d1, EQ5d2, EQ5d3, EQ5d4, EQ5d5) > 2) EQ5D_D0 = EQ5D_D0 - .234. 

Wie kann ich das in einen R-Code übersetzen? Ich habe eine Reihe von verschiedenen Möglichkeiten versucht, aber es funktioniert nicht, ich bekomme Fehlermeldungen. Grundsätzlich was ich will ist: für jede Person, die nicht alle Fragen beantwortet (Frage 1 bis 5) mit einer 1 sofort 0,071 subtrahieren und dann, wenn Frage 1 mit einer 2 Subtraktion 0,036 beantwortet wird, wenn Frage 1 mit einem 3 Subtraktion beantwortet wird 0,161 usw. Am Ende werde ich für jeden Einzelnen eine Lebensqualitätsindexnummer bekommen, mit der ich weiter arbeiten kann.

Danke für Ihre Hilfe. Zachary

+0

Das sieht ziemlich einfach - was in R haben sie versucht, die nicht funktioniert hat? Bitte posten Sie Ihren R-Code und die Fehlermeldungen, die Sie erhalten haben. –

Antwort

0

Vielleicht mit 'ifelse' Sätze auf diese Weise? (Ändern von 'Daten' um Ihren Datenrahmennamen).

data$EQ5D_D0<-1 
data$EQ5D_D0<-ifelse(max(data$EQ5d1,data$EQ5d2,data$EQ5d3,data$EQ5d4,data$EQ5d5)>1,data$EQ5D_D0-0.071,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d1==2,data$EQ5D_D0-0.036,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d1==3,data$EQ5D_D0-0.161,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d2==2,data$EQ5D_D0-0.082,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d2==3,data$EQ5D_D0-0.152,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d3==2,data$EQ5D_D0-0.032,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d3==3,data$EQ5D_D0-0.057,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d4==2,data$EQ5D_D0-0.086,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d4==3,data$EQ5D_D0-0.329,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d5==2,data$EQ5D_D0-0.124,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(data$EQ5d5==3,data$EQ5D_D0-0.325,data$EQ5D_D0) 
data$EQ5D_D0<-ifelse(max(data$EQ5d1,data$EQ5d2,data$EQ5d3,data$EQ5d4,data$EQ5d5)>2,data$EQ5D_D0-0.234,data$EQ5D_D0) 

Hoffe, dass es hilft,
Lourdes Hernández

+0

Danke Lourdes das scheint zu funktionieren –