基于新变量的初始值的SAS新变量

基于新变量的初始值的SAS新变量,sas,Sas,我有一个超过3000次观测的时间序列数据集。我试图创建一个新变量,该变量依赖于该变量的先前值,我很难让SAS计算每个观察值,以确保在到达下一个观察值之前计算先前值 我已将第一个观察值设置为1。然后,对于剩余的观察值,我希望SAS计算: 新变量=新变量*1+2 有什么想法吗?我相信这是一个相对简单的答案,但我自己还没能破译出来 您可以尝试retain语句而不是lag语句 retain new_var; new_var = new_var * (1+Var2); 我问了同样的问题,来到这里寻找答案

我有一个超过3000次观测的时间序列数据集。我试图创建一个新变量,该变量依赖于该变量的先前值,我很难让SAS计算每个观察值,以确保在到达下一个观察值之前计算先前值

我已将第一个观察值设置为1。然后,对于剩余的观察值,我希望SAS计算:

新变量=新变量*1+2


有什么想法吗?我相信这是一个相对简单的答案,但我自己还没能破译出来

您可以尝试retain语句而不是lag语句

retain new_var;
new_var = new_var * (1+Var2);

我问了同样的问题,来到这里寻找答案。我提出了以下逻辑,因此想在这里为未来的SAS爱好者解答这个问题:

使用或创建具有唯一值的现有或新变量。您可以在SAS中使用retain语句,也可以在proc sql中使用单调函数,如下所示:

/使用proc-sql/ proc-sql; 将表temp6创建为 从temp5中选择一个*,单调为var3; 退出

/使用数据步/ 数据temp7; 设定节拍5; 保留var3; var3+1; 运行

拥有此变量后,可以使用retain语句和first。用于计算新风险值的标志,如下所示。我已经在第一行用1初始化了新的_变量。您可以相应地更改初始值

数据temp8; 设定节拍7; 由var3; 保留新的变量1; 如果first.var3,则New_Var=New_Var*1+Var2; 运行


希望这有帮助

重要的是要注意,即使输入集或合并数据集上缺少新的_var,也不能存在。