1

我迷失了滞后功能;下面是我正在尝试做的事情。 在此处输入图像描述

data out;
    set in;
    by a;
 y = 0.5 ; 
 y =  lag(y) * ( 1 - x);  end;
run;

“in”表只有 X 和序列值 A,我想要的是创建“out”表,y 值以“0.5”开头,然后 Y 的其余部分来自前一个 Y 值的计算乘以 (1- X) => Y = 滞后 * ( 1 - X )

我正在尝试使用滞后功能,但它确实给了我想要的东西..

请帮忙。谢谢。

4

1 回答 1

5

LAG 函数对正在读入的数据起作用。由于输入数据集中不存在变量 y,因此 LAG 函数不会按您的意愿工作。

而是使用 RETAIN 语句来保存 y 的先前值。

data in;
input A x;
datalines;
1   0.25
2   0.16
3   0.1
4   0.5
5   0.6

data out;
    set in;
    by A;
retain y 0.5;
if _n_>1 then y=y*(1-x); 
run;
于 2013-04-30T08:31:59.980 回答