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).