找了一些资料,发现lag函数的运行机制大概是这样:* o0 }+ f1 Z/ u1 E) w- T
1.lag(x)是一个队列(queue)函数,每次执行,从队列的起始读取数值并将该值移除出队列,队列中的剩余值上移,x的当前值进入队列末尾。因此首次执行后,lag(x)值为missing,队列中只有1个值--即x的当前值。 6 v) ~: H) o# B. P+ O8 ?2.只有当lag(x)被执行后,x的当前值才会被读入队列中。因此,如果使用条件语句,不符合条件时,lag(x)不被执行,当前的x值也不会进入队列,从而不会出现在lag(x)的结果中。 2 y A& R6 T0 w# X; C, }0 A. Y' x% P& _3.SAS语句内的lag函数是无关的,即使执行的是同样的lag(x)。5 a0 O, D. ]4 c7 _# O