python - 当 spss.Submit() 内的 spss 命令会创建警告时,SPSS-Python 脚本会停止并出现错误

标签 python spss

假设我有两个变量列表

list a: a1 a2 a3
list b: b1 b2 b3

我想以这样的方式处理:

TEMPORARY.
SELECT IF a1=b1.
FREQUENCY someVar.


TEMPORARY.
SELECT IF a2=b2.
FREQUENCY someVar.


TEMPORARY.
SELECT IF a2=b2.
FREQUENCY someVar.

我尝试在 python 循环中执行此操作:

BEGIN PROGRAM.
import spss

la = ['a1', 'a2', 'a3']
lb = ['b1', 'b2', 'b3']

for a, b in zip(la, lb):
    spss.Submit('''
TEMPORARY.
SELECT IF %s=%s.
FREQUENCY someVar.
    ''' % (a, b))
END PROGRAM.

到目前为止一切顺利。除非SELECT IF 命令创建空数据集,否则此方法有效。在 Python 程序 block 之外,这将导致输出查看器中出现以下警告消息:

No cases were input to this procedure. Either there are none in the working data file or all of them have been filtered out. Execution of this command stops.

但在 Python block 内,它会导致错误并且 python 脚本停止。

Traceback (most recent call last):
File "", line 7, in
File "C:\PROGRA~1\ibm\SPSS\STATIS~1\23\Python\Lib\site-packages\spss\spss.py", line 1527, in Submit raise SpssError,error spss.errMsg.SpssError: [errLevel 3] Serious error.

有没有办法在Python内部运行这个循环(这可能会产生临时的空数据集,从而产生警告)?

最佳答案

是的,如果将有问题的函数包装在 try-except 构造中:

for a, b in zip(la, lb):
    try:
        spss.Submit('''
TEMPORARY.
SELECT IF %s=%s.
FREQUENCY someVar.
        ''' % (a, b))
    except:
        pass

关于python - 当 spss.Submit() 内的 spss 命令会创建警告时,SPSS-Python 脚本会停止并出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594895/

相关文章:

R和SPSS的区别

r - 效果与预测函数

python - aioredis + aiohttp 正确使用连接池

python - 套接字编程;通过多个设备传输时文件损坏

python - 使用 SWIG 包装结构**(指向指针的指针)参数

loops - 对于 SPSS 中的每个(变量的根)

loops - SPSS循环: parse n variables for list of values

spss - 并排列出两个或多个变量

python - keras自定义ImageDataGenerator

python - 如何在 Django 中保存内联表单集模型?