全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1587 4
2012-04-25

Fdcd

Funmager

Curryn

Stamager

Clsmager

000001

王亚伟

2

2001-11-21

2005-04-12

000001

田擎

2

2004-02-27

2005-10-29

000001

巩怀志

2

2005-10-29

2010-01-16

000001

童汀

1

2010-01-16

2012/4/1

000011

蒋征

2

2004-06-30

2006-05-24

000011

王亚伟

1

2005-12-31

2012/4/1

000021

张益驰

2

2006-11-15

2009-07-21

大家请看以上数据,数据格式为每个基金经理在每只基金的任职起始时间,现在我希望能够编一个程序,将数据调整为每个不同阶段任职的基金经理。例如:
Fdcd        Funmager            Curryn            Stamager      Clsmager
000001    王亚伟                 2                     2001-11-21   2004-02-27
000001    王亚伟,田擎      2                     2004-02-27    2005-10-29
000001  孔怀志                   2                     2005-10-29    2010-01-16
000001   童汀                       2                  2010--01-16    2012-04-01
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-4-25 13:14:50
看看
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-25 13:21:25
这个汇总出来做什么呢??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-25 15:30:33
用附件中的数据计算的,自己试验正确

proc sql;
create table temp1 as
select Stamager as time,'min' as code
from temp
union
select Clsmager as time,'max' as code
from temp;
quit;
proc sql;
create table temp2 as
select distinct *
from temp1;
quit;
proc sort data=temp2;
by time descending code;
run;
data temp2;
set temp2;
time1=lag(time);
code1=lag(code);
if code1='min' and code='min' then do;t1=time1;t2=time-1;end;
if code1='min' and code='max' then do;t1=time1;t2=time;end;
if code1='max' and code='min' then do;t1=time1+1;t2=time-1;end;
if code1='max' and code='max' then do;t1=time1+1;t2=time;end;
keep t1 t2;
if t1^=.;
run;
proc sql;
create table temp3 as
select distinct temp2.*,Fdcd,Funmager
from temp2 left join temp
on Stamager<=t1 and clsmager>=t2;
quit;
proc sort data=Temp3 out=temp3;
   by T1 T2 FDCD Funmager;
run;
proc transpose data=temp3 out=temp4 PREFIX=COL NAME=_SOURCE_;
   by T1 T2 FDCD;
   var FUNMAGER;
run;
data temp4;
set temp4;
Funmager=compress(col1||','||col2);  
run;
proc sort data=temp4;
by FDCD Funmager t1 t2;
run;
data temp4;
set temp4;
cls=t1-lag(t2);
run;
data temp4;
set temp4;
by FDCD Funmager;
if _n_=1 then flag=1;
else if first.FDCD or first.Funmager or cls^=1 then flag+1;
run;
proc sql;
create table temp5 as
select distinct FDCD,FUNMAGER,min(t1) as tmin,max(t2) as tmax
from temp4 group by flag;
quit;
data temp5;
set temp5;
format tmin yymmdd10. tmax yymmdd10.;
run;
proc sort data=temp5;
by fdcd tmin;
run;
附件列表

temp.rar

大小:847 Bytes

 马上下载

本附件包括:

  • temp.sas7bdat

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-25 18:40:44
哇,牛人,谢谢,太感谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群