/*
目的:比对沪深300成份股派息情况
细节:proc import读取沪深300成份股信息,从中财网提取A股派息情况(目前系统过粘贴成文本进而导入sas),
最后proc sql依据股票ID进行合并处理
遇到的问题:在合并过程中会遇到两数据变量的属性不一致的问题,merge...by报错,proc sql结果多于300条记录
*/
*导入沪深300数据,该数据系20120619日数据,收盘价是昨收;
PROC IMPORT OUT= WORK.hs300
DATAFILE= "E:\yugao\work\分红派息\沪深300.xls"
DBMS=EXCEL REPLACE;
RANGE="Sheet1$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
*保留部分数据,变量fundid,fundname,close;
DATA hs300_2;
SET hs300(RENAME=(_COL0=fundid _col1=fundname _COL12=close ));
keep fundid fundname close;
run;
*导入A股派息一览表,该表有中财网获得;
PROC IMPORT OUT= WORK.paixi
DATAFILE= "E:\yugao\work\分红派息\fen.xls"
DBMS=EXCEL REPLACE;
RANGE="Sheet2$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
*保留部分数据:股票代码fundid,是否分配sffp,送转股数szgshu,派息paixi,股权登记日gqdjr,除权除息日chuquan;
DATA paixi_2;
SET paixi(RENAME=(_COL0=fundid _col3=sffp _COL6=szgshu _COL7=paixi _COL9=gqdjr _col10=chuquan));
drop _:;
run;
*依股票代码进行数据合并;
proc sql;
create table new as
select distinct a.fundid,a.fundname,a.close,
b.sffp,b.szgshu,b.paixi,b.gqdjr,b.chuquan
from hs300_2 as a
inner join
paixi_2 as b
on a.fundid=b.fundid;
quit;
*依股票代码/股权登记日等派息;
proc sort data= new ;
by fundid descending sffp descending gqdjr;
run;
PROC SORT DATA=NEW OUT=NEW2;BY DESCENDING chuquan;RUN;