我有多个 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)命令创建一些变量列表。我有这个想法,但我没有任何相同的示例。这个选择查询必须很小,这意味着这个查询应该动态选择除这 3 个(Col1 Col34 Col66)之外的所有变量,因为我有不同的 SPSS 文件,并且这 3 个(Col1 Col34 Col66)变量相同,但其余变量不同,并且都包含不同数量的变量。
如果我有一个变量列表(通过排除 3 动态生成),那么我可以在 MAKE sub 命令中指出它。请任何人帮助我。
最佳答案
解决此问题的一种方法可能是重命名这些特定列,然后选择以“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) .
关于macros - 创建除某些特定变量之外的所有变量的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205017/