- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 2321 个
- 通用积分
- 9.8528
- 学术水平
- 179 点
- 热心指数
- 194 点
- 信用等级
- 167 点
- 经验
- 27443 点
- 帖子
- 622
- 精华
- 0
- 在线时间
- 851 小时
- 注册时间
- 2011-3-27
- 最后登录
- 2023-5-14
|
- data have;
- input id stk year qtr va;
- year_qtr = year * 4 + qtr;
- cards;
- 1 2 1996 3 18
- 1 2 1996 4 15
- 1 2 1997 1 15
- 1 2 1998 2 20
- 1 2 1998 4 20
- 1 5 1997 1 15
- 1 5 1999 1 12
- 1 5 1999 2 10
- 1 5 1999 3 9
- ;run;
- proc sort data = have out = isy nodupkey;
- by id stk year;
- run;
- data full(drop = va1: this pre);
- if 0 then set have(rename=va=va1);
- if _n_ = 1 then do;
- dcl hash h(dataset:'have(rename=va=va1)');
- h.definekey('id','stk','year_qtr');
- h.definedata('va1');
- h.definedone();
- end;
- set isy(keep = id stk year);
- do qtr = 1 to 4;
- year_qtr = year * 4 + qtr;
- this = ~h.find();
- va1_this = va1;
- pre = ~h.find(key:id, key:stk, key:year_qtr - 1);
- va1_pre = va1;
- select(cats(this,pre));
- when('11') do;va = va1_this - va1_pre;output;end;
- when('10') do;va = va1_this; output;end;
- when('01') do;va = - va1_pre;output;end;
- otherwise;
- end;
- end;
- run;
- proc sort;
- by id stk year_qtr;
- run;
复制代码最后那条你自己再设置删除一下就ok
|
-
总评分: 论坛币 + 5
学术水平 + 5
热心指数 + 5
信用等级 + 5
查看全部评分
|