我试图在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.