/* 目的:比对沪深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;