Ошибка цикла Python в синтаксисе SPSS, только если я запускаю один и тот же код дважды - PullRequest
0 голосов
/ 25 февраля 2019

Я довольно новичок в программировании на 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

1 Ответ

0 голосов
/ 25 февраля 2019

могу ли я ответить самому, должен ли я редактировать обсуждение или, возможно, удалить его?я думаю, что я выяснил причину, я думаю, что функция выбирает только те значения, которые уже выбраны, я попытался добавить этот код SPSS до начала, и он, кажется, работает:

use all.
exe.
begin program.
...

вВ последнем цикле есть фильтр данных, и я удалил его перед запуском скрипта.пожалуйста, дайте мне знать, если вы хотите, чтобы я отредактировал или удалил сообщение

...