Python 在 SPSS 中 - KEEP 变量

Python in SPSS - KEEP variables

我根据变量名中的字符串选择了我需要的变量。我不确定如何从我的 SPSS 文件中只保留这些变量。

begin program.
import spss,spssaux
spssaux.OpenDataFile(r'XXXX.sav')
target_string = 'qb2'
variables = [var for var in spssaux.GetVariableNamesList() if target_string in var]
vars = spssaux.VariableDict().expand(variables)
nvars=len(vars)
for i in range(nvars):
    print vars[i]
spss.Submit(r"""
SAVE OUTFILE='XXXX_reduced.sav'.
ADD FILES FILE=* /KEEP \n %s.
""" %(vars))
end program.

它打印出的变量列表是正确的,但在试图保留它们时失败了。我猜这与未激活数据集或再次导入文件有关,为什么会出现错误?

您是否尝试过颠倒 SAVE OUTFILE 和 ADD FILES 命令的顺序?我没有通过 Python 在 SPSS 中 运行 这个,但是在标准 SPSS 中,您的语法会将文件写入磁盘,然后 select 内存中活动版本的变量 -因此,如果您稍后访问保存的文件,它将是您 selected 变量之前的版本。 如果这不起作用,你能解释一下摔倒试图保留它们的意思吗?

  1. 您需要在 SAVE 之前使用 ADD FILES FILE 命令将您保存的文件设为 "reduced" 文件
  2. 我认为您在 python 程序中的最后一行应该尝试加入列表 vars 中的元素。例如:%( " ".join(vars) )

看来问题已解决,但我想指出另一种无需编写任何 Python 代码即可完成的解决方案。扩展命令 SPSSINC SELECT VARIABLES 定义了一个基于变量属性的宏。这可以在 ADD FILES 命令中使用。

SPSSINC SELECT 变量 MACRONAME="!selected" /属性模式 = ".*qb2".
添加文件 /FILE=* /KEEP !已选中。

SELECT VARIABLES 命令实际上是在Python 中实现的。它的选择标准还可以包括其他元数据,例如类型和测量级别。