DO IF 框架内的多个 OR 条件评估为 SYSMIS
Multiple OR conditions within DO IF framework evaluating as SYSMIS
我正在尝试创建一个新变量,如果该案例在一系列其他变量中的任何变量中选择了“1”,则该案例会生成“1”。然而,尝试下面的代码将每个案例评估为 SYSMIS,即使一些受访者在参考变量系列中的变量中选择了“1”。
我尝试使用带有两个 ELSE IF 的 DO IF 结构,但没有成功。
以下是我到目前为止的尝试(参考系列中的变量可以采用“1”(所需值)、“0”或“998”):
*ELA dichotomous*
DO IF (w1t_gr1.2=1 OR
w1t_gr2.2=1 OR
w1t_gr3.2=1 OR
w1t_gr3.2=1 OR
w1t_gr4.2=1 OR
w1t_gr5.2=1 OR
w1t_gr6.2=1 OR
w1t_gr7.2=1 OR
w1t_gr8.2=1).
COMPUTE rw1t_ela=1.
ELSE IF (w1t_gr1.2=0 OR
w1t_gr2.2=0 OR
w1t_gr3.2=0 OR
w1t_gr3.2=0 OR
w1t_gr4.2=0 OR
w1t_gr5.2=0 OR
w1t_gr6.2=0 OR
w1t_gr7.2=0 OR
w1t_gr8.2=0).
COMPUTE rw1t_ela=0.
ELSE IF (w1t_gr1.2=998 OR
w1t_gr2.2=998 OR
w1t_gr3.2=998 OR
w1t_gr3.2=998 OR
w1t_gr4.2=998 OR
w1t_gr5.2=998 OR
w1t_gr6.2=998 OR
w1t_gr7.2=998 OR
w1t_gr8.2=998).
COMPUTE rw1t_art=0.
ELSE.
COMPUTE rw1t_art=0.
END IF.
EXECUTE.
我希望这会为在任何参考变量系列(例如 w1t_gr3.2)中选择“1”的任何人提供“1”,但每个案例的计算结果都是 SYSMIS。
您发布的语法创建了两个变量,rw1t_ela
实际上应该像您描述的那样工作,并且对于八个原始变量中的任何一个包含 0 或1.
如果您在语法中将 rw1t_art
替换为 rw1t_ela
,它应该可以正常工作。
也就是说,有一种更有效的方法可以满足您的需求:
只有当其他变量之一包含 1 时,以下代码才会在 rw1t_ela
中为您提供值 1,在所有其他情况下为 0:
compute rw1t_ela=any(1, w1t_gr1.2, w1t_gr2.2, w1t_gr3.2, w1t_gr4.2,
w1t_gr5.2, w1t_gr6.2, w1t_gr7.2, w1t_gr8.2).
我正在尝试创建一个新变量,如果该案例在一系列其他变量中的任何变量中选择了“1”,则该案例会生成“1”。然而,尝试下面的代码将每个案例评估为 SYSMIS,即使一些受访者在参考变量系列中的变量中选择了“1”。
我尝试使用带有两个 ELSE IF 的 DO IF 结构,但没有成功。
以下是我到目前为止的尝试(参考系列中的变量可以采用“1”(所需值)、“0”或“998”):
*ELA dichotomous*
DO IF (w1t_gr1.2=1 OR
w1t_gr2.2=1 OR
w1t_gr3.2=1 OR
w1t_gr3.2=1 OR
w1t_gr4.2=1 OR
w1t_gr5.2=1 OR
w1t_gr6.2=1 OR
w1t_gr7.2=1 OR
w1t_gr8.2=1).
COMPUTE rw1t_ela=1.
ELSE IF (w1t_gr1.2=0 OR
w1t_gr2.2=0 OR
w1t_gr3.2=0 OR
w1t_gr3.2=0 OR
w1t_gr4.2=0 OR
w1t_gr5.2=0 OR
w1t_gr6.2=0 OR
w1t_gr7.2=0 OR
w1t_gr8.2=0).
COMPUTE rw1t_ela=0.
ELSE IF (w1t_gr1.2=998 OR
w1t_gr2.2=998 OR
w1t_gr3.2=998 OR
w1t_gr3.2=998 OR
w1t_gr4.2=998 OR
w1t_gr5.2=998 OR
w1t_gr6.2=998 OR
w1t_gr7.2=998 OR
w1t_gr8.2=998).
COMPUTE rw1t_art=0.
ELSE.
COMPUTE rw1t_art=0.
END IF.
EXECUTE.
我希望这会为在任何参考变量系列(例如 w1t_gr3.2)中选择“1”的任何人提供“1”,但每个案例的计算结果都是 SYSMIS。
您发布的语法创建了两个变量,rw1t_ela
实际上应该像您描述的那样工作,并且对于八个原始变量中的任何一个包含 0 或1.
如果您在语法中将 rw1t_art
替换为 rw1t_ela
,它应该可以正常工作。
也就是说,有一种更有效的方法可以满足您的需求:
只有当其他变量之一包含 1 时,以下代码才会在 rw1t_ela
中为您提供值 1,在所有其他情况下为 0:
compute rw1t_ela=any(1, w1t_gr1.2, w1t_gr2.2, w1t_gr3.2, w1t_gr4.2,
w1t_gr5.2, w1t_gr6.2, w1t_gr7.2, w1t_gr8.2).