使用DO IF命令从多个变量中创建新变量



我需要创建一个新变量(var_1),当所有其他变量(var_2, var_3, var_4, var_5)都有可用数据时,其结果为值1。否则,如果其中只有一个没有任何数据,则应该显示值2。

因此,var_1 = 1表示所有数据都可用,而var_1 = 2表示并非所有数据都可用。

所以我在SPSS中编写了以下语法:

DO IF (var_2, var_3, var_4, var_5) GE 0.
COMPUTE var_1 = 1.
ELSE IF ANY (var_2, var_3, var_4, var_5) missing.
COMPUTE var_1 = 2.
END IF.
EXECUTE.

我不知道如何编码"失踪"给了我多个错误警告。可能有一个非常简单的解决方案,但我真的很挣扎,因为我还是一个初学者,所以任何帮助将非常感激。谢谢你! !

方法之一是使用nmiss函数:

compute var_1=1+(nmiss(var_2, var_3, var_4, var_5)>0).

因此var_1将为1,除非其余变量中缺失值的数量大于0,在这种情况下var_1变为2。

您可以使用COUNT命令来计算具有给定值、值范围甚至不同值集的列的数量。

在您的情况下,最直接的方法可能是使用COUNTRECODE语句来按需要对数据进行二值化。

* cnt number of non-negatives across var2 thru var5 .
COUNT var1 = var2 var3 var4 var5 (0 THRU HI) .
* if all four vars >=0 then 1, otherwise 2 .
RECODE var1 (0 THRU 3 = 2) (4 = 1) .
EXE .

编辑:我还将注意到,上面的代码是基于引用GE O的示例代码。如果您希望它基于任何有效值(而不仅仅是>=0),您可以像下面这样更新您的COUNT

COUNT var1 = var2 var3 var4 var5 (LO THRU HI) .

如果您甚至想要包括用户缺失的值作为有效的(只排除系统缺失的值),您可以采用相同的方法,但反过来(计算缺失的数量,如果没有则设置为1)。

COUNT var1 = var2 var3 var4 var5 (SYSMIS) . 
RECODE var1 (0 = 1) (1 THRU 4 = 2) .
EXE .

最新更新