2015-07-28 4 views
3

Я пытаюсь создать общее количество в SPSS. Кроме того, мне нужно больше одного. Мой набор данных SPSS выглядит так (кроме общего количества):Запуск итогов в SPSS/Python

  • [x] | [y] | [общая работа]
  • 10 | 1 | 10 (= 0 + 10)
  • 20 | 1 | 30 (= 10 + 20)
  • 30 | 2 | 30 (= 0 + 30)
  • 40 | 2 | 70 (= 30 + 40)
  • 50 | 3 | 50 ...

Для каждого значения y (идентификатор группы) Я хочу создать общее количество. Я смог создать текущую совокупность по всему набору данных, но это не то, что мне нужно. Мне нужно что-то вроде этого:

Для у = 1 до 500 вычислений х = х + лаг (х)

К сожалению, SPSS не в состоянии выполнить х = х + лаг (х) в цикле , Мне нужно это сделать в синтаксисе SPSS (или Python), иначе я бы сделал это вручную в Excel, хотя это много данных. Я очень расстроен и буду очень признателен за любую помощь!

ответ

2

Вы можете использовать SPLIT FILE в переменной id, а затем использовать CREATE для расчета суммарной суммы в ID.

SPLIT FILE BY ID. 
CREATE /RunTotal=CSUM(X). 
SPLIT FILE OFF. 
+0

(Я уверен, что попробовал это. Спасибо!) – DerGilb

2

SPLIT FILE/CREATE подход, безусловно, самый простой в код и очень интуитивно и точно, как я добивался этого до недавнего времени, когда Дэвид Marso на другом форуме предложили другой подход, который работал гораздо быстрее на больших наборах данных.

DO IF ($CASENUM= 1 OR Y<>LAG(Y)). 
    COMPUTE RunTot=X. 
ELSE. 
    COMPUTE RunTot=SUM(X, LAG(RunTot)). 
END IF. 
Смежные вопросы