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

标签 macros 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)命令创建一些变量列表。我有这个想法,但我没有任何相同的示例。这个选择查询必须很小,这意味着这个查询应该动态选择除这 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/

相关文章:

python - 如何在通过 rpy 将 SPSS 文件(.sav)导入 pandas 时保留标签?

r - 使用查找表和 sjlabelled::set_label 标记变量

scala - 如何使用scala反射2.10检查case类的哪些参数具有默认值

c++ - 这段代码(用于容器遍历的宏)是否有效?如果是,为什么?

c - 最新的container_of宏中__mptr的用途是什么?

VBA:根据列中的 'random' 内容填充单元格

r - 使用haven::write_sav() 放大.sav 文件大小

r - 将 SPSS 语法文件转换为 R 源代码

c++ - c宏扩展错误

python - 以编程方式使值/数据标签显示在 SPSS(饼图)图表上