SPSS 从其他变量计算变量

SPSS compute variable from other variables

我正在尝试创建一个 "index" 变量(*在数学上不是索引),我从数据集中的其他变量中调用了 'Res'。这是我尝试使用的代码:

COMPUTE Res = 0.
EXECUTE.

DO IF(Q33 = 6).
    COMPUTE RES = Res - 1.

IF(Q34 = 7).
    COMPUTE Res = Res - 1.

IF(Q35 = 1 OR Q35 = 2).
    COMPUTE Res = Res + 1.

END IF.
EXECUTE. 

虽然这不起作用 - 我的变量没有改变。尝试使用 ELSE IF 并且确实更改了变量,但当然由于 "else" 只实施了一项更改 - 仅实施了一项更改。

澄清一下,我正在尝试计算 Res 的分数,因此我希望逐步执行代数运算。因此,例如,对于

Q33 = 6, Q34 = 7 and Q 35 = 2

所有 3 如果条件成立所以 Res 应该是 0 -1 -1 +1 = -1

对于

的受访者

Q33 = 2, Q34 = 2 and Q 35 = 1

前两个if条件为假,最后一个为真所以Res应该是0 + 1 = 1

对于

的受访者

Q33 = 2, Q34 = 2 and Q 35 = 3

所有if条件都不成立,所以Res应该为0。

谢谢。

这可能不是最好的方法,但以下方法有效:

DO IF(Q33 = 6).
    COMPUTE RES = Res - 1.
END IF.

DO IF(Q34 = 7).
    COMPUTE Res = Res - 1.
END IF.

DO IF(Q35 = 1 OR Q35 = 2).
    COMPUTE Res = Res + 1.
END IF.

DO IF(Q35 = 5 OR Q35 = 6).
    COMPUTE Res = Res - 1.
END IF.
EXECUTE.

根据您的描述,您需要独立于其他条件执行每个条件转换(这在您提供的解决方案中也很明显)。
所以你的原始代码的问题与使用 do if 而不是 if 有关。 do if 中包含的所有命令只有在满足 do if 条件时才会执行。在您的情况下,以下 if 命令包含在 do if 循环中,因此没有执行 if (Q33 ne 6)。

do if 用于条件命令,但对于单个转换不需要 - if 就足够了。所以你只需要:

COMPUTE Res=0 
IF(Q33 = 6) Res = Res - 1.
IF(Q34 = 7) Res = Res - 1.
IF(Q35 = 1 OR Q35 = 2) Res = Res + 1.
IF(Q35 = 5 OR Q35 = 6) Res = Res - 1.

最后,SPSS 为错误的逻辑语句赋予数值 0,为正确的逻辑语句赋予数值 1。因此,这应该做同样的工作(包括 RES 的初始定义):

compute RES = 0 - (Q33 = 6) - (Q34 = 7) + (Q35 = 1 OR Q35 = 2) - (Q35 = 5 OR Q35 = 6).

请注意,如果条件变量中有缺失值,最后一种方法就会出现问题。在这种情况下,您应该改用它:

compute RES = sum(0, - (Q33 = 6), - (Q34 = 7), (Q35 = 1 OR Q35 = 2), - (Q35 = 5 OR Q35 = 6)).