Я довольно новичок в программировании на Python.
Я пытаюсь автоматизировать некоторые таблицы в SPSS, используя python (и я вроде как это сделал ...), используя цикл и некоторый код на python, ноон работает нормально только при первом запуске синтаксиса, во второй раз он табулирует только один раз:
У меня есть файл SPSS с различными проектами, объединенными вместе (т.е. в разных странах), поэтому сначала я пытаюсь извлечь списокпроектов с использованием встроенной функции.Как только у меня есть список проектов, я запускаю цикл и меняю синтаксис spss для выбора случая и табуляции.
это код:
begin program.
import spss
#Function that extracts the data from spss
def DatiDaSPSS(vars, num):
if num == 0:
num = spss.GetCaseCount()
if vars == None:
varNums = range(spss.GetVariableCount())
else:
allvars = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
varNums = [allvars.index(i) for i in vars]
data = spss.Cursor(varNums)
pydata = data.fetchmany(num)
data.close()
return pydata
#store the result of the function into a list:
all_prj=DatiDaSPSS(vars=["Project"],num=0)
#remove duplicates and keep only the country that i need:
prj_list=list(set([i[0] for i in all_prj]))
#loop for the tabulation:
for i in range(len(prj_list)):
prj_now=str(prj_list[i])
spss.Submit("""
compute filter_$=Project='%s'.
filter by filter_$.
exe.
TEXT "Country"
/OUTLINE HEADING="%s" TITLE="Country".
CTABLES
/VLABELS VARIABLES=HisInterviewer HisResult DISPLAY=DEFAULT
/TABLE HisInterviewer [C][COUNT F40.0, ROWPCT.COUNT PCT40.1] BY HisResult [C]
/CATEGORIES VARIABLES=HisInterviewer HisResult ORDER=A KEY=VALUE EMPTY=EXCLUDE TOTAL=YES
POSITION=AFTER
/CRITERIA CILEVEL=95.
""" %(prj_now,prj_now))
end program.
Когда я запускаю его второйвремя показывает только последнее значение в списке (и только одну таблицу).Если я перезагружаю SPSS, он работает нормально с первого раза.
Это из-за функции?
Я использую spss25