某班某课程的三个测试成绩如下表:
序号 | 学号 | 姓名 | 性别 | 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;
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
;
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识别