R中的EQ5D语法,条件语句

时间:2016-06-13 12:21:10

标签: r syntax conditional spss

我正在尝试在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最后,我会得到每个人的生活质量指数,我可以进一步研究。

感谢您的帮助。 扎卡里

1 个答案:

答案 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