在论坛里找了都没找到答案,特发此贴,求教高人。
1 我有许多股票(五千只)收益率的数据(每只股票一列时间序列数据,一张表格纵向是时间,横向是股票代码),但是其中很多股票的年份有缺失值。如果我就想删掉有缺失值一整列数据(也就是说有缺失值我就删掉那只股票)有没有程序可以实现自动筛选和删除?
2 如果我的股票数据一列下来的,我想把它拆成每只股票一个数据集,在网上找了一个宏,但是这个宏最多只能拆999个数据集,这是为什么呢?把程序附在下面。
十分感谢!!
*宏的赋值语句;
DATA _NULL_;
SET trial END=EOF;
BY CRSP_FUNDNO;
IF FIRST.CRSP_FUNDNO THEN DO;
NUMCTY+1;
CTYOBS=0;
END;
CTYOBS+1;
IF LAST.CRSP_FUNDNO THEN DO;
CALL SYMPUT('MCTY'||LEFT(PUT(NUMCTY,3.)),CRSP_FUNDNO);
CALL SYMPUT('MOBS'||LEFT(PUT(NUMCTY,3.)),LEFT(CTYOBS));
END;
IF EOF THEN
CALL SYMPUT('MTOTCT',NUMCTY);
RUN;
*下面的宏实现多个数据集的生成:这里dsn是原数据集,byvar是要根据哪个变量的值来生成数据集;
%macro group(dsn,byvar);
data %do i=1 %to &MTOTCT;
A&i
%end;
;
set &dsn;
%do i=1 %to &MTOTCT;
if &byvar="&&MCTY&i" then output A&i;
%end;
run;
%mend;
%group(***,***);