某班某课程的三个测试成绩如下表:
序号 | 学号 | 姓名 | 性别 | test1 | test2 | test3 |
1 | 20093096 | 毛万进 | 男 | 88 | 79 | 92 |
2 | 20093097 | 李海铭 | 男 | 81 | 83 | 85 |
3 | 20093098 | 仇语言 | 女 | 80 | 79 | 83 |
4 | 20093099 | 庞晓娟 | 女 | 89 | 76 | 91 |
5 | 20093100 | 刘栢童 | 男 | 86 | 80 | 88 |
6 | 20093101 | 王志平 | 男 | 76 | 85 | 82 |
7 | 20093102 | 黄菊红 | 女 | 85 | 78 | 89 |
8 | 20093103 | 屈欢欢 | 女 | 81 | 90 | 87 |
9 | 20093104 | 罗文秀 | 男 | 90 | 72 | 85 |
10 | 20093105 | 柯彬彬 | 男 | 87 | 68 | 81 |
11 | 20093106 | 彭小军 | 男 | 76 | 84 | 81 |
12 | 20093108 | 陈阿鸿 | 男 | 68 | 79 | 75 |
13 | 20093109 | 崔根来 | 男 | 78 | 80 | 85 |
14 | 20093110 | 宋伟军 | 男 | 77 | 83 | 82 |
15 | 20093112 | 黄拥华 | 男 | 67 | 78 | 74 |
16 | 20093113 | 黎芳 | 女 | 80 | 82 | 86 |
17 | 20093114 | 李亚桢 | 男 | 79 | 89 | 83 |
18 | 20093115 | 谭庆 | 男 | 57 | 68 | 66 |
19 | 20093116 | 邹翠霞 | 女 | 74 | 95 | 82 |
20 | 20093118 | 王赵辉 | 男 | 54 | 78 | 64 |
21 | 20093119 | 刘已鹏 | 男 | 76 | 89 | 83 |
22 | 20093120 | 周志建 | 男 | 72 | 85 | 77 |
23 | 20093122 | 肖江 | 男 | 64 | 90 | 74 |
24 | 20093123 | 郑红日 | 男 | 57 | 65 | 65 |
25 | 20093124 | 秦瑶 | 女 | 82 | 81 | 86 |
26 | 20093126 | 周晗晶 | 女 | 88 | 88 | 91 |
27 | 20093127 | 段梦 | 女 | 96 | 93 | 95 |
28 | 20093128 | 许哲榕 | 男 | 89 | 89 | 91 |
29 | 20093129 | 柏华洋 | 男 | 79 | 87 | 83 |
30 | 20093130 | 申鹏飞 | 男 | 65 | 89 | 74 |
31 | 20093132 | 吴高飞 | 男 | 88 | 79 | 92 |
32 | 20093133 | 方文 | 男 | 87 | 84 | 90 |
33 | 20093134 | 王环环 | 女 | 82 | 86 | 87 |
34 | 20093135 | 符文庆 | 女 | 82 | 90 | 86 |
根据上述数据,按下列要求分别建立SAS数据集
- 建立临时数据集名aaa,写出相应的程序;
- 建立SAS库标记study;
- 将上述数据存放在(2)中建立的库中,并取数据集study.aaa,并加以查看,写出相应的程序;
- 将上述数据建立一个excel外部数据,然后转化为SAS数据集,并加以呈现呈现,写出相应的程序;
- 将(3)中建立的数据集中的所有男生放到数据集studentf中,而所有女生放到数据集studentm中. 并加以呈现呈现,写出相应的程序。
- 求出数据集study.aaa中test1,test2,test3的总分和平均分,并加以呈现呈现,写出相应的程序。
实验目的:
- 了解SAS系统的主要窗口及其功能(2)了解SAS程序的组成及SAS程序规则;(3)掌握新库标记的建立及建立永久的和临时的SAS数据集的方法(4)外部数据集导入称为SAS数据集集及SAS数据集的编辑。
实验程序:
1、
data aaa;
input xuhao xh name$ sex$ test1-test3;
cards;
120093096毛万进男887992
220093097李海铭男818385
320093098仇语言女807983
420093099庞晓娟女897691
520093100刘栢童男868088
620093101王志平男768582
720093102黄菊红女857889
820093103屈欢欢女819087
920093104罗文秀男907285
1020093105柯彬彬男876881
1120093106彭小军男768481
1220093108陈阿鸿男687975
1320093109崔根来男788085
1420093110宋伟军男778382
1520093112黄拥华男677874
1620093113黎芳女808286
1720093114李亚桢男798983
1820093115谭庆男576866
1920093116邹翠霞女749582
2020093118王赵辉男547864
2120093119刘已鹏男768983
2220093120周志建男728577
2320093122肖江男649074
2420093123郑红日男576565
2520093124秦瑶女828186
2620093126周晗晶女888891
2720093127段梦女969395
2820093128许哲榕男898991
2920093129柏华洋男798783
3020093130申鹏飞男658974
3120093132吴高飞男887992
3220093133方文男878490
3320093134王环环女828687
3420093135符文庆女829086
;
run;
proc print data=aaa;
run;
2、3、
libname study'D:\SAS\SAS学习';
data study.aaa;
set aaa;
keep xuhao xh name sex test1-test3;
run;
proc print data=study.aaa;
run;
4、
proc import out=aaa
datafile="C:\Users\86166\Desktop\IT\SAS实验\实验1\SAS实验1.xls"
dbms=excel2000 replace;
proc print data=aaa;
5、
data studentf studentm;
set study.aaa;
select (sex);
when ("男") output studentf;
when ("女") output studentm;
otherwise put sex="错误";
end;
run;
proc print data=studentf;
proc print data=studentm;
run;
6、
data st;
set study.aaa;
sum=test1+test2+test3;
averge=sum/3;
run;
proc print data;
实验中存在的问题及解决的办法:
问题:1、要输入的数据是一个表,如何把它输入到PMG里面?
- 当要输入的是汉字的时候,如何输入到PMG里面、
- 从外部Excel中导入数据,为什么列名被其他符号代替了?
解决:
- 在word文档中把表复制到cards;的后面,但在实际中我理解的是表格并不能直接输入,于是把表复制到excel中,利用python转换为txt文本输入。
- 在txt文件中写好代码,再复制到PMG窗口中即可。
- 因为从excel中导入的列名夹杂中文,不能被SAS识别