在SPSS / Python中运行总数



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

  • [x] | [y] | [running total]
  • 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 + lag(x)

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

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

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

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. 

最新更新