R 中的 EQ5D 语法,条件语句

EQ5D syntax in R, conditional statements

我正在尝试在 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 回答所有问题(问题 1 到 5)的人立即减去 0.071 然后如果问题 1 用 2 减去 0.036 如果问题 1 用 3 减去 0.161 回答等等。最后我会为每个人得到一个生活质量指数,我可以用它做进一步的工作。

感谢您的帮助。 扎卡里

也许可以这样使用'ifelse'个句子? (用您的数据框名称更改 'data')。

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)

希望对您有所帮助,
卢尔德·埃尔南德斯