今天介绍SAS中的两个函数:LAG 和 DIF,首先看SAS官方文档的解释:LAG,Returns values from a queue,返回一个队列的值;DIF,Returns differences between an argument and its nth lag,返回当前值与队列值的差值。看定义,不太好理解,我们用代码解释一下。


观察程序的结果,我们很容易理解,LAG(X)所取的是变量当前值的前一位。last_x第一行记录为缺失值,因为首行无前一位数值。我们继续看一下DIF函数。


DIF函数取的是变量当前值与前一个值的差值,可以这样理解DIF(X)=X - LAG(X)。看示例代码,很容里理解这两个Function的用法,下面我说一个LAG函数的注意点,看如下代码。


代码中,有个条件语句:只有当X>2时,才会执行lag_x = lag(x)
。也就是说,只有当X=3,5,7的时候,LAG函数才会被调用,总共调用3次。我们看调用三次的lag_x的值,". 3 5", 这个结果不是直观的当前值的上一个值"1 . 2",LAG函数所调用的值的序列,只包括LAG(x)运行后的那个X值。
网友评论