2016-06-13 69 views
0

我正在嘗試在r中爲eq5d問卷寫一個腳本。我在網上找到了spss的腳本,但我更願意將它運行在r上,因爲我正在做所有其他的r。因此,SPSS中的腳本應該是:R中的EQ5D語法,條件語句

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. 

如何將此轉換爲r代碼? 我嘗試了一堆不同的方法,但它不起作用,我不斷收到錯誤消息。 基本上,我想要的是:對於沒有回答所有問題(問題1到5)的任何個人,用1來立即減去0.071,然後如果問題1用2減去回答0.036,如果問題1用3減法回答0.161等等。最後我會爲每個人提供一個可以進一步工作的生活質量指數。

感謝您的幫助。 Zachary

+0

這看起來很簡單 - 你是怎麼R中沒有工作試試?請發佈您的R代碼和您得到的錯誤消息。 –

回答

0

也許用這種方式使用'ifelse'句子? (通過您的數據框名稱更改「數據」)。

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) 

希望它能幫助,
路德·埃爾南德斯

+0

謝謝盧爾德這似乎是工作 –