【问题标题】:Python in SPSS - KEEP variablesSPSS中的Python - 保持变量
【发布时间】:2016-10-12 14:18:05
【问题描述】:

我根据变量名中的字符串选择了我需要的变量。我不确定如何从我的 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.

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

【问题讨论】:

    标签: python spss


    【解决方案1】:

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

    【讨论】:

    • 我已经交换了 SAVE OUTFILE 和 ADD FILES 的顺序,这是有道理的,但错误似乎有所不同。对不起我的俚语,我的意思是脚本在那个时候出错了,即它试图保留变量的地方。
    • >第 25 列中的错误 #5241。文本:u >未定义的变量名称。检查拼写,验证这个 > 变量的存在。它是否在此命令中被删除或重命名? >第 26 列中的错误 #5242。文本:qb2a_1 >变量列表中出现意外或无效符号。
    • 打印变量时它们是正确的,但在后面的命令中无法识别它们。我不知道它从哪里找到“u”,因为它不在它打印的变量列表中
    【解决方案2】:

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

    SPSSINC 选择变量 MACRONAME="!selected" /PROPERTIES PATTERN = ".*qb2".
    添加文件 /FILE=* /KEEP !selected。

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

    【讨论】:

      【解决方案3】:
      1. 您需要在SAVE 之前使用ADD FILES FILE 命令,以使您保存的文件成为“缩减”文件
      2. 我认为您在 python 程序中的最后一行应该尝试加入列表 vars 中的元素。例如:%( " ".join(vars) )

      【讨论】:

      • 主要问题是第二点。这已经解决了。你能解释一下为什么需要这样做吗?这与我最初拥有的有什么不同?
      • 变量 vars 被编译为一个列表,因此它的元素需要连接/连接,以便根据需要形成一个字符串。请事先使用 vars 打印语句,您会看到它的形式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多