使用SYSMIS

时间:2019-04-16 13:22:15

标签: spss

我遇到了一个以前从未遇到过的问题,我无法弄清楚到底是怎么回事。

我正在尝试如下计算变量:

COMPUTE A=$SYSMIS.
IF B=$SYSMIS A=$SYSMIS.
IF C > SUM(B, 1) A= 1.
IF C = SUM(B, 1) A= 2.
IF C = B A= 2.
IF C < B A=3.

除了B = $ SYSMIS时,有很多A的例子实际上并没有缺失,这一点运行得很好。

我使用以下方法进行了测试:

TEMP.
SELECT IF B=$SYSMIS.
FREQ A.

它告诉我“此过程未输入任何案例。工作数据文件中没有案例,或者所有案例都已被过滤掉。”

意味着,代码正常工作。

但是...我发现有1000多个案例不符合这种逻辑。

TEMP.
SELECT IF ID=102.
FREQ A B.

这显示了一个特定的ID,该ID具有A = $ SYSMIS和B = 2。

enter image description here

A,B和C都是数字。

在此先感谢您提供任何见解! (:

1 个答案:

答案 0 :(得分:2)

首先,应该使用IF B=$SYSMIS代替if missing(B)-用于计算,分析和选择。
您的结果的另一个可能原因是这样的命令:

IF C > SUM(B, 1) A=1.

如果B丢失,则SUM(B, 1)的结果为1。因此,即使C>1 A的值为1,尽管B丢失了。 有两种方法可以解决这个问题。
首先,如果缺少X或Y,则使用X+Y而不是sum(X,Y)会导致值丢失:

IF C > (B + 1) A=1.

第二个选项:将命令COMPUTE A=$SYSMIS.放在语法的末尾而不是开头,因此,当缺少B时在A中输入的任何值都将替换为缺少的值。