假设我有两个变量列表
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/