[经济学]SAS综合练习题的答案

上传人:re****.1 文档编号:499156656 上传时间:2023-02-19 格式:DOC 页数:43 大小:517.50KB
返回 下载 相关 举报
[经济学]SAS综合练习题的答案_第1页
第1页 / 共43页
[经济学]SAS综合练习题的答案_第2页
第2页 / 共43页
[经济学]SAS综合练习题的答案_第3页
第3页 / 共43页
[经济学]SAS综合练习题的答案_第4页
第4页 / 共43页
[经济学]SAS综合练习题的答案_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《[经济学]SAS综合练习题的答案》由会员分享,可在线阅读,更多相关《[经济学]SAS综合练习题的答案(43页珍藏版)》请在金锄头文库上搜索。

1、AnswersSAS金融数据处理综合练习题1. 创建一包含10000个变量(X1-X10000),100个观测值的SAS数据集。分别用DATA步,DATA步数组语句和IML过程实现。习题课例题(1)用data步实现data test1a;informat x1-x10000 9.2; /*创建100个变量,规定输出格*/do i=1 to 100; /*做循环*/output;/*每一次循环,输出所有的变量,包括i*/drop i;/*去掉i*/end;run;或者data test1a;format x1-x10000 best12.; /*创建10000个变量x1-x10000,但未有初始

2、化*/do i=1 to 100; /*创建100个观测*/output;/*且每一个观测都输出到数据集test1a*/end;drop i;run;(2)用data步数组语句实现data test1b;array t10000 x1-x10000 ;/*创建数组变量*/do i =1 to 100;/*每个变量有100个观测*/output;/*每一次循环,输出所有的变量,包括i*/drop i;/*去掉i*/end;/*循环结束*/data test1c;array t10000 x1-x10000;do j=1 to 100;/*100次观测的循环*/do i = 1 to 10000;

3、ti=i;/*第i个变量等于i*/end;output;/*输出第i次观测的i个变量的值*/end;drop i j;/*去掉i和j*/run;或者data test1b;array t10000 x1-x10000;do j=1 to 100;/*100次观测的循环*/do i = 1 to 10000;ti=i;/*第i个变量等于i*/end;output;/*输出第i次观测的i个变量的值*/end;drop i j;/*去掉i和j*/run;(3)用IML过程实现proc iml;/*启用iml环境*/x=x1:x10000;/*定义数组x1-x10000*/t= j(100,10000

4、,1) ;/*创建100行10000列的. 同元素矩阵*/print t x;/*打印两个矩阵察看*/create test1d from tcolname=x;/*创建数据集c,变量数为列数 ,观测数为行数,列名更改为变量名,默认逻辑库为临时*/append from t; /*将t中的值填充的数据集中*/show datasets;show contents;/*显示数据集的一些7788的属性*/close test1d;run;quit;或者proc iml;x=x1:x10000;t= shape(1,100,10000) ;/*shape和j不太一样,顺序是元素,行,列,j的顺序为行

5、,列,元素*/print t x;create test1d from tcolname=x;append from t; show datasets;show contents;close test1d;run;quit;(4)用宏实现%macro names(name,number,obs);data a;%do i=1 %to &obs;%do n=1 %to &number;&name&n=1;%end;output;%end;run;%mend names;%names(x, 10000,100);2. 多种方法创建包含变量X的10000个观测值的SAS数据集。3. 数据集A中日期变

6、量DATE包含有缺失值,创建包含日期变量DATE的数据集B,并填充开始到结束日之间的所有日期值。期中考试题proc iml;/*启用iml环境*/x= date price;/*注意所用的括号类型*/t= 1111 2,2341 2,2132 3,1234 5,12345 6,3456 6,6753 4,2345 7,2134 9;print t;/*构造9行2列的向量*/t1,1=.;t2,1=.;t5,1=.;t9,1=.;/*令某些date的观测成为缺失值,包括第一个观测值*/create a from tcolname=x;/*从矩阵构造数据集a,为变量命名date和price */a

7、ppend from t; /*填充矩阵已有的观测值 */show datasets;show contents;/*显示一些信息,可省略*/ close a;run;quit;/*退出iml环境 */data a;set a;format date yymmdd8.2;/*将数值型的改变为日期型的输出变量*/run;data a1;set a ;n=_n_;/*取出观测号,以方便进行排序 */format date yymmdd8.2;retain temp;/*设定一个变量temp,规定如果没有新的观测读入,不清空原值,保留原来的观测值 */if date=. then temp=date

8、;/*如果读入的date的观测值不为空 */else date=temp;run;/*至此数据集填充了后面的部分,最之前的缺失值未能填充,后面将数据集逆序排列进行填充*/data a2;n=_n_;/*创建数据集c,取出c的观测号,以方便进行逆向排序*/set a1;run;proc sort data=a2;by descending n;/*将c逆向排序*/run;data a3;/*定义数据集d,填充数据集d的末尾的观测*/set a2 ;drop n temp;run;data a4 ;set a3;retain temp;if date=. then temp=date;else d

9、ate=temp;run;data a4;n=_n_;set a4;run;proc sort data=a4 out=b(drop=n temp);by descending n;/*定义数据集e,将d中的观测最一次逆序,得到原序*/run;以下是助教的做法但是无法运行成功proc sort data=a;by date;data b(drop=date);set a end=end;by date;retain start;if _n_=1 then start=date;if _n_=end then do;last=date;output;end;run;data b(keep=dat

10、e);informat date yymmdd10.;format date yymmdd10.;set b;do date=start to last;output;end;run;4. 创建包含日期变量DATE的SAS数据集,日期值从1900年1月1日到2000年1月1日。习题课例题data test4a;informat date 9.2 x y;format date yymmdd10.2;/*规定输出格式*/x=mdy(1,1,1900);/*返回sas日期值,即以1960/1/1为0的日期值*/y=mdy(1,1,2000);do i= x to y;date=i;output;e

11、nd;drop i x y;run;或者data test4b;do date=1jan1900d to 1jan2000d;output;end;format date yymmdd10.;run;5. 利用随机数函数RANUNI对某数据集设计返回抽样方案。习题课例题data sample(drop =samplesize n);samplesize=5; /*样本容量为5*/do n=1 to samplesize; /*从1到样本容量的循环*/readit=ceil(ranuni(0)*totobs);put readit=;set resdat.class point=readit n

12、obs=totobs;output;end;stop;run;或者data dat1;set resdat.class;keep name;run;%macro sample(i);data dat2;set dat1 nobs=nobs;ran=ceil(nobs*ranuni(&i);run;proc sort data=dat2;by ran;run;%mend sample(i);%sample(2);data dat3;set dat2;if _n_=6;run;%sample(3);data dat4;set dat2;if _n_=6;run;%sample(5);data da

13、t5;set dat2;if _n_=6;%sample(30);data dat6;set dat2;if _n_=6;run;data a;set dat3 dat4 dat5 dat6;run;或者data a;set resdat.class;keep name;run;data b;set a nobs=nobs;ran=ceil(nobs*ranuni(2007);run;proc sort data=b;by ran;data c;set b;if _n_=5;run;6. 利用随机数函数RANUNI对某数据集设计不返回抽样方案。习题课例题data a;set resdat.cl

14、ass;keep name;run;data b;set a nobs=nobs;ran=ceil(nobs*ranuni(1);put ran=;run;proc sort data=b;by ran;data c;set b;if _n_=15;run;或者data a;set resdat.class;keep name;run;data b;set a nobs=nobs;ran=ceil(nobs*ranuni(2007);run;proc sort data=b;by ran;data c;set b;if ran=lag(ran) then delete;run;data d;set c;if _n_=15;run;7. 计算数据集A中变量X的累乘。习题课例题proc iml;x=x;m=do(1,10,0.5);t=t(m);print m t;create a from tcolname=x ;append from t;quit; /*用IML生成数据集a*/d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号