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)
希望对您有所帮助,
卢尔德·埃尔南德斯
我正在尝试在 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)
希望对您有所帮助,
卢尔德·埃尔南德斯