【问题标题】:how to use lag function in the calculation in sas如何在sas计算中使用滞后函数
【发布时间】:2013-04-29 23:15:51
【问题描述】:

我迷失了滞后功能;下面是我正在尝试做的事情。

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

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

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

请帮忙。 谢谢。

【问题讨论】:

  • 请您向您的表中添加更多数据,用于 A 和 X 列,直到 X = 1 的值。

标签: function time sas lag


【解决方案1】:

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;

【讨论】:

  • 可能值得解释的是 RETAIN Y 0.5;在第一次迭代中将 y 初始化为 0.5 的值,然后除此之外,它会保持前一次迭代中的任何值
  • 谢谢,以前不知道,这是很棒的提示:)
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2017-08-21
  • 2020-04-03
  • 2018-10-27
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
相关资源
最近更新 更多