创建除某些特定变量外的所有变量的列表

时间:2018-09-06 13:16:50

标签: spss

我有多个具有多个变量的spss文件(col1,col2,... col150)。我正在尝试创建一个通用代码,以使用VARSTOCVASES重组文件。在这种情况下,我需要保留3个变量(col1,col34,col66),这些变量在所有文件中都是通用的,但其余变量是不同的。我知道通常的方式是将所有剩余变量添加到MAKE子命令中。我正在添加波纹管

VARSTOCVASES   
/MAKE  VariableName1 FROM Col1 Col2 Col3 ....etc(except 3)
/INDEX=VariableName(VariableName1) 
/KEEP=Col1 Col34 Col66

我想使用(SPSSINC SELECT VARIABLES)命令创建一些变量列表,我有这个主意,但我没有相同的示例。这个Select查询必须很小,这意味着该查询应该动态选择除这些3(Col1 Col34 Col66)以外的所有变量,因为我具有不同的SPSS文件,并且这3(Col1 Col34 Col66)变量相同,但其余变量不同,并且都包含不同数量的变量。

如果我有一个变量列表(通过排除3来动态生成),则可以在MAKE子命令中指出该变量。请任何人帮助我。

1 个答案:

答案 0 :(得分:2)

一种解决方法是重命名这些特定的列,然后选择以“ col”开头的所有其他变量:

rename variables (col1 col34 col66=var1 var34 var66).
spssinc select variables MACRONAME = "!allCOL" 
   /PROPERTIES PATTERN="Col*".

现在所有名称以“ Col”开头的变量都在名为“!allCOL”的列表中,您可以在语法中使用它,例如:

VARSTOCVASES   
/MAKE VariableName1 FROM !allCOL /INDEX=VariableName(VariableName1) .

编辑:另一种解决方案 仅当您要在列表上的所有变量都有一个恒定模式时,以上解决方案才有效。如果不是这种情况,则可以使用以下解决方案命名不需要的变量,然后将其余所有变量都放在列表中。

* first we define a new attribute in which we mark the 
    variables we don't want on the list.

VARIABLE ATTRIBUTE VARIABLES=Car_Model_1 Car_Model_2 
     ATTRIBUTE=IncludeInMake ("no").

* now we create the list, leaving out the unwanted variables.

spssinc select variables MACRONAME = "!forMake"  
    /ATTRVALUES NAME=IncludeInMake VALUE="".  
VARSTOCVASES /MAKE Val FROM !forMake /INDEX=var(val) .