SAS上机练习题(全部-含参考答案)

重庆医科大学--卫生统计学统计软件包

SAS上机练习题(一)

1、SAS常用的窗口有哪三个?请在三个基本窗口之间切换并记住这些命令或功能键。

2、请在PGM窗口中输入如下几行程序,提交系统执行,并查看OUTPUT窗和LOG窗中内容,注意不同颜色的含义;并根据日志窗中的信息修改完善程序。 DATS EX0101; INPUTT NAME $ AGE SEX; CARDS; XIAOMIN 19 1 LIDONG 20 1 NANA 18 2 ; PROD PRONT DATS=EX1; RUN; PROC PRINT DATA=EX1; VAR NAME AGE; RUN; 3、将第2题的程序、结果及日志保存到磁盘。

4、试根据如下例1的程序完成后面的问题: 表1 某班16名学生3门功课成绩表如下 问题:

1) 建立数据集;

2) 打印至少有1门功课不及格同学的信息;(提示,使用if语句)

参考程序:

data a;

input id sh wl bl; cards; 083 68 71 65 084 74 61 68 085 73 75 46 086 79 80 79 087 75 71 68 084 85 85 87 085 78 79 75

精选

086 80 76 79 087 85 80 82 088 77 71 75 089 67 73 71 080 75 81 70 118 70 54 75 083 70 66 84 084 62 73 65 099 82 70 79 ; run;

data b; set a;

if sh<60 or wl<60 or bl<60 then output; run;

proc print data=b; var id sh wl bl; run;

5、根据下列数据建立数据集

表2 销售数据

开始时间 2005/04/28 2005 09 18 2007/08/12 20040508 终止时间 25MAY2009 05OCT2009 22SEP2009 30JUN2009 费用 $123,345,000 $33,234,500 $345,600 $432,334,500 提示:(格式化输入;数据之间以空格分隔,数据对齐;注意格式后面的长度应以前一个位置结束开始计算,如果读入错误,可试着调整格式的宽度;显示日期需要使用输出格式) 开始时间,输入格式yymmdd10. 终止时间,输入格式date10. 费用,输入格式dollar12.

精选

参考程序:

data a;

input x1 yymmdd10. x2 date10. x3 dollar13.; cards;

2005/04/28 25MAY2009 $123,345,000 2005 09 18 05OCT2009 $33,234,500 2007/08/12 22SEP2009 $345,600 20040508 30JUN2009 $432,334,500 ; run;

proc print; run;

proc print;

format x1 yymmdd10. x2 date9. x3 dollar13.; run;

6、手机号码一编码规则一般是:YYY-XXXX-ZZZZ,其YYY为号段;XXXX一般为所在地区编码;ZZZZ为对应的个人识别编号。下面有一组电话号码(来源于网络,末位以X替换),请用程序完成下列要求:

(1)分别列出属于联通、移动、电信的号码; (2)分别提取地区编号及个人识别编号。 (提示:列输入方式或者字符串操作) 说明:

移动:134-139、150、151、152、157、158、159、188 联通:130、131、132、155、156 电信:133、153、180、189

手机号码 1508320464X 1510291126X 1339644156X 1532464828X 1365721647X 1523105754X 1592624347X 1331237668X 1370048578X 手机号码 1313654836X 1351425709X 1303612231X 1383824855X 1522322763X 1357851051X 1508311759X 1327313520X 1556443719X 精选

1507244457X 1321246707X 1368464734X 1394913242X

1804346016X 1513441713X 1308279203X 1897876466X 参考程序: data a;

input y 1-3 x $ 4-7 z $ 8-11;

if 134<=y<=139 or y in (150,151,152,157,158,159,188) then ygrp='移动'; if y in (130,131,132,155,156) then ygrp='联通'; if y in (133,153,180,189) then ygrp='电信'; cards;

1508320464X 1510291126X 1339644156X 。。。。。。 1513441713X 1308279203X 1897876466X ;

proc print; run;

7、下表是某班学生几门功课的成绩,其中形势课是考查课,其它均为考试课。请完成以下处理并且保存程序、结果和日志:(注意函数在DATA STEP中使用的位置) (1)用Mean()函数求出每位同学的平均分,将其保存在变量中;

(2)用sum()函数或者表达式求出每位同学的总分,将其保存在变量中;

(3)如果每门考试课权重是0.75,每门考查课权重为0.25,试求每位同学的加权平均分; (4)将数据集保存为永久数据集,保存位置为“D:\\mydata\\”;

(5)调用上面的永久数据集,并将男、女生的成绩分别保存在数据集Dmale和Dfemale中。

表3 某班同学几门功课的成绩 学号 0083 0414 0564 0774 0873 0874 0875 0876 性别 高数 (0=女,1=男) 1 1 1 1 1 1 1 1 73 90 97 40 68 74 73 79 生理 73 79 87 60 65 68 46 79 精选

人解 64 71 89 61 60 56 65 74 数理统计 74 85 91 65 76 60 66 89 形势(考查) 75 78 80 75 75 75 87 87 0877 0878 0880 0881 0883 0884 0885 0886 0887 0888 0889 0890 0891 0892 0893 0894 0895 0896 0898 0899 0900 0901

1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 75 76 81 76 77 85 78 80 85 77 67 75 69 66 70 62 91 51 67 79 76 81 68 60 73 81 60 87 75 79 82 75 71 70 76 71 84 65 78 60 73 72 68 70 55 64 60 84 60 84 62 77 81 74 71 75 76 60 75 65 61 42 67 78 63 70 60 71 75 89 66 85 66 73 84 67 69 69 79 60 80 69 66 44 73 68 84 82 70 80 82 78 75 90 80 83 80 80 90 80 90 78 85 81 78 78 85 80 90 79 参考程序:

libname pb \; data pb.score;

input id$ xb gs sl rj sltj xs; mscore=mean(of gs sl rj sltj xs); tscore=sum(of gs sl rj sltj xs);

wmscore= ((gs+sl+rj+sltj)*0.75+xs*0.25)/(0.75*4+0.25); cards;

0083 1 73 73 64 74 75 0414 1 90 79 71 85 78 0564 1 97 87 89 91 80 0774 1 40 60 61 65 75 0873 1 68 65 60 76 75 0874 1 74 68 56 60 75 0875 1 73 46 65 66 87 0876 1 79 79 74 89 87 0877 1 75 68 55 60 70 0878 1 76 60 64 71 80 0880 1 81 73 60 75 82 0881 1 76 81 84 89 78

精选

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4