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

Create new variable from multiple variables using DO IF command

我需要创建一个新变量 (var_1),当所有其他变量 (var_2、var_3、var_4、var_5) 有可用数据。否则,如果其中只有一个没有任何数据,它应该显示值 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.

我不知道如何编码“缺失”并且给我多个错误警告。可能有一个非常简单的解决方案,但无论如何我真的很挣扎,因为我仍然是初学者,所以任何帮助将不胜感激。谢谢!!

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

在您的情况下,最直接的方法可能是使用 COUNT,然后使用 RECODE 语句根据需要对数据进行二值化。

* 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) .

如果您甚至想将用户缺失值包含为有效值(仅排除 系统缺失 值),您可以采用相同的方法,但反过来(计算有多少缺失,如果 none 存在,则设置为 1

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

一种方法是使用 nmiss 函数:

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

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