- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 3581 个
- 通用积分
- 43.5110
- 学术水平
- 12 点
- 热心指数
- 13 点
- 信用等级
- 10 点
- 经验
- 7348 点
- 帖子
- 220
- 精华
- 0
- 在线时间
- 294 小时
- 注册时间
- 2005-4-14
- 最后登录
- 2024-3-28
|
藤椅
jeozu
发表于 2014-5-20 21:10:17
- data ori;
- do i=1 to 100;
- do j=2006 to 2013;
- _t=ceil(ranuni(0)*250);
- do t=1 to _t;
- _z=ceil(ranuni(0)*30);
- do z=1 to _z;
- if mod(i,5) then eps=rannorm(0)*0.5+0.3;
- output;
- end;
- end;
- end;
- end;
- end;
- label i="Analyst" j="year" t="lwritdt" z="stkcd" ;
- run;
- proc sort data=ori;by i j z t;run;
- data ori;
- set ori;
- by i j z;
- eps_t_1=lag1(eps);
- if first.z then eps_t_1 = .;
- run;
- proc sql noprint;
- create table concensus as
- select a.i
- , a.j
- , a.z
- , a.t
- , case when a.eps>a.eps_t_1 and a.eps>b.concensus_jzt then 1
- when a.eps<a.eps_t_1 and a.eps<b.concensus_jzt then 1
- else 0
- end as boldness
- from ori a left join (
- select b1.j
- , b1.z
- , b1.t
- , mean(b2.eps) as concensus_jzt
- from (select distinct j,t,z from ori) b1, ori b2
- where b1.j=b2.j
- and b1.t>b2.t
- and b1.z=b2.z
- group by 1,2,3
- ) b
- on a.j=b.j
- and a.z=b.z
- and a.t=b.t
- ;
- quit;
复制代码
|
|