spss IF循环在特殊情况下忽略MISSINGS

时间:2018-03-31 19:44:25

标签: if-statement syntax spss missing-data

我想计算变量X = x1 + x2 + x3。 x1,x2和x3的值为1或0.我将系统缺失重新编码为-77。有一些条件应该得到满足。

1)如果x1,x2或x3中存在缺失值,则如果其中一个或两个变量的值为1,则应忽略该值。因此,尽管存在缺失值但应计算总和但只有至少有一个1(例如X = x1 + x2 + x3 = 0 +缺失+ 1 = 1)

2)如果x1,x2或x3中缺少值,则如果根本没有1则不应忽略它,并且不应计算总和。 (例如,X = x1 + x2 + x3 = 0 +缺失+缺失=缺失)。

我尝试用IF制作一个循环,但它不会起作用,我只是无法弄清楚原因。

COMPUTE X =SUM(x1, x2, x3).
IF (x1=-77 AND x2~=1 AND x3~=1) X=999. 
IF (x2=-77 AND x1~=1 AND x3~=1) X=999.
IF (x3=-77 AND x1~=1 AND x2 ~=1)X=999.  
EXECUTE.

这些是返回的结果: 当x1 = 1,x2 = 0,x3 = -77,则X = 1。 (这是我想要的结果。 当x1 = -77,x2 = 0,x3 = 0时出现问题,因为那时X = 0而不是我想要的999。

我认为通过上面的循环,我接近结果,但缺少某些东西。 下面我发布了我做的其他一些循环,但都没有工作,我认为上面的那个最接近正确答案。

非常感谢你的帮助和复活节快乐! 干杯绝望的Ichav:)

COMPUTE X = x1 + x2 + x3.
RECODE X (SYSMIS=-77).
IF ((X = -77 AND x1 = 1) OR (X = -77 AND x2 = 1) OR (X = -77 AND x3 = 1)) X =1.
EXECUTE.

此处X始终返回为-77。

1 个答案:

答案 0 :(得分:1)

这是为了创建一些样本数据:

data list list/x1 x2 x3.
begin data
1 0  -77
0 -77 0
0 0 0 
1 0 1
end data.
MISSING VALUES x1 x2 x3 (-77).

正如您所看到的,假设-77被定义为缺失值 - 否则计算sum(x1, x2, x3)将失败。

COMPUTE X=SUM(x1, x2, x3).
if X=0 and nmiss(x1, x2, x3)>0 X=999.

现在 - 如果没有1个值,则总和为0.如果总和为零且涉及任何(大于0)缺失值,则总和将更改为999.

如果您以某种方式间接计算X而未将-77转换为缺失值,则可以在-77语句中使用值if(如您之前尝试过的那样) )。这是一种更简单的方法:

if X=0 and any(-77, x1, x2, x3) X=999.