使用 python 为 SPSS 创建扩展

creating extension for SPSS with python

所以我发现了 SPSS 的 python 扩展,一切正常,我现在创建了一些脚本并将它们包含在扩展映射中,并且工作正常。然而,现在我已经创建了几个需要参数的脚本,我想我可以只使用相同的方法,但我想不行。

def Run(args):
    import spss
    def testing_p(variables):
        all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
        variable_nr = [all_variables.index(i) for i in variables]

        print all_variables
        print variable_nr

使用以下 .xml-文件:

<Command xmlns="http://xml.spss.com/extension" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="testing_p" Language="Python">
</Command>

然而,这在调用 testing_p(['my_var', 'my_var2']) 时一直抛出错误:

Warnings
This command should specify a valid subcommand at the beginning.
Execution of this command stops.

我无法解决这个问题,因为当不放入扩展映射时一切正常,只做:

BEGIN PROGRAM.
import spss
def testing_p(variables):
   all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
   variable_nr = [all_variables.index(i) for i in variables]

   print all_variables
   print variable_nr
END PROGRAM.

对于可以用 Python、R 或 Java 编写的扩展,您需要创建包含命令名称、任何子命令以及参数和参数类型的语法规范你要。这是一个开始的图片(SPSSINC_TURF,它与 Statistics 一起安装)。

这将指导统计分析器检查用户输入。然后它还会调用包含用户输入的复杂结构的 运行 函数。您可以使用扩展模块中的函数将其映射到您的 Python 变量并进行进一步验证。这是 SPSSINC TURF 运行 函数启动的图片。

最后,如果语法有效,您的 运行 函数将调用 worker 函数来做一些有用的事情,通过调用

将所有参数映射到指定的参数

processcmd(oobj, args, superturf, vardict=spssaux.VariableDict())
这是从 extensions.py.

导入的

查看帮助系统中的扩展文档,并查看一些随 Statistics 安装的扩展的示例。

最后,这是我的一个演示文稿中的一张幻灯片,总结了从用户输入到结果的流程。