- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SAS金融数据处理综合练习题
创建一包含10000个变量(X1-X10000),100个观测值的SAS数据集。分别用DATA步,DATA步数组语句和IML过程实现。
D
data p1(drop=i);
retain x1-x10000 0;
do i=1 to 100;
output;
end;
run;
data步数组:
data p1(drop=i);
array x x1-x10000;
do i=1 to 100;
do over x;
x=ranuni(0);
end;
output;
end;
run;
宏:
%macro names(name,number,obs);
data a;
%do i=1 %to obs;
%do n=1 %to number;
namen=1;
%end;
output;
%end;
Run;
%mend names;
%names(x, 10000,100);
多种方法创建包含变量X的10000个观测值的SAS数据集。
data a;
retain x 0;
do i=1 to 10000;
drop i;
output;
end;
run;
随机数:
data a (drop=i);
do i=1 to 10000;
x=ranuni(0);
output;
end;
run;
读入其他数据文件:(先创建数据文件a,再从中读取)
data a (drop=i);
do i=1 to 10000;
x=ranuni(0);
output;
file x:\a.txt;
put x;
end;
run;
data b;
infile x:\a.txt;
input x;
output;
run;
读入其他数据集:
data a;
do i=1 to 10000;
x=ranuni(0);
output;
end;
run;
data b;
set a;
drop i;
output;
run;
数据集A中日期变量DATE包含有缺失值,创建包含日期变量DATE的数据集B,并填充开始到结束日之间的所有日期值。
data a;/*可用用stk000001数据集*/
set Resdat.stk000001;
if date=. then delete;/*要排序之前必须先把缺失值去掉,否则缺失值会排在最前面*/
run;
proc sort data=a; /*set语句前必须要排序*/
by date;
data b(drop=date);
set a end=end; /*文件结束的临时变量,不包含在数据集中。前面的end是函数,后面的end是变量名*/
by date;
retain start; /*没有retain语句则start的值为缺失*/
if _n_=1 then start=date;
if end then do; /*也可以写if end then do last=date;*/
last=date;
output;
end;
run;/*此时只有一个观测,start值为date最小值,last值为date最大值*/
data b(keep=date);/*只留date一个变量*/
informat date yymmdd10.;
format date yymmdd10.;
set b;
do date=start to last;
output;
end;
run;
如图,缺失的日期被补充完整,观测数从4056变为6167.
方法二:
data a;
set a nobs=nobs;
call symput(temp,nobs);/*查找a的观测值个数,并赋值给宏变量temp*/
if date=. then delete;/*要排序之前必须先把缺失值去掉,否则缺失值会排在最前面*/
run;
proc sort data=a; /*set语句前必须要排序*/
by date;
data b(drop=date1);
set a(rename=(date=date1)) end=end;/*文件结束的临时变量,不包含在数据集中*/
by date1;
retain date; /*没有retain语句则date的值为缺失*/
if _n_=1 then date=date1; /*查找第一个观测值*/
else delete;
run;
data b(keep=date);
informat date yymmdd10.;
format date yymmdd10.;
set b;
do n=1 to
文档评论(0)