在SPSS / Python

时间:2015-07-28 20:49:52

标签: python spss running-total

我试图在SPSS中创建一个运行总计。此外,我需要不止一个。我的SPSS数据集看起来像这样(运行总计除外):

  • [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(组ID)的每个值,我想创建一个运行总计。我能够在整个数据集上创建一个运行总计,但这不是我需要的。我需要这样的东西:

对于y = 1到500    计算x = x +滞后(x)

可悲的是,SPSS无法在循环中执行x = x + lag(x)。我需要在SPSS语法(或Python)中完成此操作,否则我会在Excel中手动完成,即使它有很多数据。我非常沮丧,真的很感激任何帮助!

2 个答案:

答案 0 :(得分:2)

您可以在id变量上使用SPLIT FILE,然后使用CREATE计算ID中的累计总和。

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

答案 1 :(得分:2)

SPLIT FILE / CREATE方法当然是最简单的编码和非常直观的,直到最近,David Marso在另一个论坛上提出了另一种方法,它在更大的数据集上运行得更快,这正是我实现这一目标的方法。

DO IF ($CASENUM= 1 OR Y<>LAG(Y)).
    COMPUTE RunTot=X.
ELSE.
    COMPUTE RunTot=SUM(X, LAG(RunTot)).
END IF.