- 在线时间
- 1084 小时
- 最后登录
- 2015-9-10
- 注册时间
- 2014-4-18
- 听众数
- 162
- 收听数
- 1
- 能力
- 10 分
- 体力
- 43980 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 15251
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 3471
- 主题
- 2620
- 精华
- 1
- 分享
- 0
- 好友
- 513
升级   0% TA的每日心情 | 开心 2015-3-12 15:35 |
|---|
签到天数: 207 天 [LV.7]常住居民III
 群组: 第六届国赛赛前冲刺培 群组: 国赛讨论 群组: 2014美赛讨论 群组: 2014研究生数学建模竞 群组: 数学中国试看培训视频 |
找了一些资料,发现lag函数的运行机制大概是这样:
9 b6 n9 A9 r' M" g5 e7 o1.lag(x)是一个队列(queue)函数,每次执行,从队列的起始读取数值并将该值移除出队列,队列中的剩余值上移,x的当前值进入队列末尾。因此首次执行后,lag(x)值为missing,队列中只有1个值--即x的当前值。+ I, h! h. Y; d3 f. v( l, \9 z' n6 |
2.只有当lag(x)被执行后,x的当前值才会被读入队列中。因此,如果使用条件语句,不符合条件时,lag(x)不被执行,当前的x值也不会进入队列,从而不会出现在lag(x)的结果中。
* C9 |4 ? A; I' d3.SAS语句内的lag函数是无关的,即使执行的是同样的lag(x)。% T, x1 O! {% r
7 H( V- n, T' _6 S" T" J( E5 N7 E2 o
http://support.sas.com/documentation/cd ... 212547.htm- F9 b% |( f. K7 K( O8 j& Z" e( E7 k
http://support.sas.com/documentation/cd ... ect048.htm' ^, s9 B( V+ J! r, J3 o; f
http://support.sas.com/forums/thread.js ... 673( k( P* N# m/ c- h; `8 H2 y, `
0 y( B: @1 X6 K. G3 R
4 S3 i* `; k) f输出结果:
# A8 n4 h* I5 ~( ~ Obs x y1 y2 y3 z1 z2 z3 z4 z5 z6
% w/ a3 k* s4 _$ {1 [" l7 k- ]; L8 Y$ C9 D. J4 y6 S' i& x# V8 F
1 1 . 1 1 . . . . . .
0 M o' C1 c7 c9 i2 J 2 2 1 1 2 1 . 1 1 . 1
: V+ [% n/ v& y1 Q 3 3 2 1 3 2 2 2 2 2 .% T M' b* g( o* {% K2 Q: M
4 4 3 1 4 3 3 3 3 3 .
% q4 o) r* Q! p8 P9 K) I 5 5 4 1 5 4 4 4 4 4 2+ \* H* c! l- v1 q. ~
6 6 5 1 6 5 5 5 5 5 5+ K3 r% V3 O( O8 y
: g; {! j4 G0 ]& {. r2 G7 i) i
# J0 o$ S2 c/ W2 u1 q$ t |
zan
|