我正在尝试计算 SAS 中的一列,该列依赖于自身。例如,我有以下初始值列表
ID Var_X Var_Y Var_Z
1 2 3 .
2 . 2 .
3 . . .
4 . . .
5 . . .
6 . . .
7 . . .
我需要填补空白。公式如下:
Var_Z = 0.1 + 4*Var_x + 5*Var_Y
Var_X = lag1(Var_Z)
Var_Y = lag2(Var_Z)
正如我们看到的 Var_X、Var_Y 和 Var_Z 的值是相互依赖的。所以计算需要遵循特定的顺序。
First we compute when ID = 1, Var_Z = 0.1 + 4*2 + 5*3 = 23.1
Next, when ID = 2, Var_X = lag1(Var_Z) = 23.1
Var_Y 在 ID = 2 时不需要计算,因为我们这里已经有了初始值。所以,我们有
ID Var_X Var_Y Var_Z
1 2 3 23.1
2 23.1 2 102.5 (= 0.1 + 4*23.1 +5*2)
3 . . .
4 . . .
5 . . .
6 . . .
7 . . .
我们不断重复这个过程,直到计算出所有的值。
有没有办法,SAS可以处理这个?我尝试了 DO 循环,但我想我没有做好正确的编码工作。它在 ID = 2 后停止。
我是 SAS 的新手,所以不熟悉 SAS 是否有办法轻松处理这个问题。将等待您的建议。