- 在线时间
- 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函数的运行机制大概是这样:
/ J8 q& R1 O/ n& N: O1.lag(x)是一个队列(queue)函数,每次执行,从队列的起始读取数值并将该值移除出队列,队列中的剩余值上移,x的当前值进入队列末尾。因此首次执行后,lag(x)值为missing,队列中只有1个值--即x的当前值。' h( R+ O& H# `7 ]9 w+ s
2.只有当lag(x)被执行后,x的当前值才会被读入队列中。因此,如果使用条件语句,不符合条件时,lag(x)不被执行,当前的x值也不会进入队列,从而不会出现在lag(x)的结果中。
3 M+ r7 O1 }( Q% y+ }6 `% ^8 _- d' n3.SAS语句内的lag函数是无关的,即使执行的是同样的lag(x)。
) w& ?0 c9 B! H% f: s5 k, w1 s# o: d* a* P+ i, \7 ^' o( q! A
http://support.sas.com/documentation/cd ... 212547.htm
, r3 ?& |5 y7 z* S- o. p8 Qhttp://support.sas.com/documentation/cd ... ect048.htm
4 E U* s- U0 M0 B( Z% chttp://support.sas.com/forums/thread.js ... 673
7 ]4 @+ }9 T4 I8 j7 o3 q9 i# z' A R# H* o
% L# X* _2 X" O+ ~$ n2 I7 L输出结果:
1 M5 U8 L# U: Q3 f- t( D Obs x y1 y2 y3 z1 z2 z3 z4 z5 z6* `' z+ z2 L8 b* V2 K" T2 T* A7 W
) j L4 m; _1 O& U% B! \
1 1 . 1 1 . . . . . .( U# K4 k2 l# R" ~ |8 @0 S$ h
2 2 1 1 2 1 . 1 1 . 1
0 c# r- S0 u7 \% Z" R- ^' w% s/ i: H" m 3 3 2 1 3 2 2 2 2 2 .; H( K9 o2 ~1 _2 d, X! a
4 4 3 1 4 3 3 3 3 3 .
% t. S' g4 `& b 5 5 4 1 5 4 4 4 4 4 24 v# v% l2 h" o$ W) r& p" C ^
6 6 5 1 6 5 5 5 5 5 53 ^7 `: j) [4 \; @* R- F0 I
2 u p4 t6 c* x/ K1 E. K
" o/ F" T' }3 i& L+ J# p+ ]$ P3 s |
zan
|