使用 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。
我需要创建一个新变量 (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。