我正在尝试在r中为eq5d调查问卷编写一个脚本。我发现了spss在线的脚本,但我宁愿在r中运行它,因为我在r中正在做其他所有事情。所以SPSS中的脚本将是:
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最后,我会得到每个人的生活质量指数,我可以进一步研究。
感谢您的帮助。 扎卡里
答案 0 :(得分: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)
希望它有所帮助,
LourdesHernández