SPSS从其他变量计算变量

时间:2017-03-14 08:41:56

标签: spss

我正在尝试创建一个“索引”变量(*数学上不是索引),我从我的数据集中的其他变量中调用了“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且Q35 = 2

如果条件为真,则全部为3,因此Res应为0 -1 -1 +1 = -1

对于有

的受访者
  

Q33 = 2,Q34 = 2且Q35 = 1

前两个如果条件为假且最后一个为真,则Res应为0 + 1 = 1

对于有

的受访者
  

Q33 = 2,Q34 = 2且Q35 = 3

如果条件为假,则全部为Res,因此Res应为0。

感谢。

2 个答案:

答案 0 :(得分:1)

根据您的描述,您需要独立于其他条件转换执行每个条件转换(这在您提供的解决方案中也很明显)。
因此,原始代码的问题与使用do if而不仅仅是if有关。只有满足do if条件时,才会执行do if中包含的所有命令。在您的情况下,if循环中包含以下do 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设置为false逻辑语句,将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)).

答案 1 :(得分: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.