试
验目的本实验主要练习数据集的导入和导出,建立、删除和保留变量、数据集的合并与拆分,排序、转置等操作。
掌握从已有数据文件建立数据集以及在已有数据集的基础上建立、删除变量;
掌握sas的程序控制的三种基本控制流;
掌握数据数据修正、排序、转置和标准化的过程或语句。
实验内容完成下列各题
一.某班12 名学生3 门功课成绩如下:
用sas的data步建立数据集。
筛选出有一科不及格的学生。
计算每人平均成绩,并按五级制评定综合成绩。
二.教材P141的6,7题。
三.data2_1.sav和data2_2.sav是一组被试(编号1-47)分别做两个量表数据,请把它们合并起来,保存为“量表.sav”,data2_3.sav是另一组被试(编号48-65)做成量表的数据,请把这些数据加到“量表.sav”里,并保存。
1)a1、a5、a30、a43、a49和b2、b6、b19为反向计分,把他们转化为正向。
2)data2_1.sav和data2_2.sav是一组被试(编号1-47)分别做两个量表的
数据,请把它们合并起来,保存为“量表.sav”,data2_3.sa v是另一组被试(编号48-65)做成量表的数据,请把这些数据加到“量表.sav”里,并保存。
3)a1到a25为a量表的第一个维度,a26到a50为第二个维度,b量表只有
一个维度,分别求出三个维度的总分(即所有项目得分相加)。
4)把b量表总分按照从小到大的顺序排列,设置另外一个变量(group),b
量表得分前十名赋值“1”,标签为“高分组”,后十名赋值“3”,标签为“低分组”,其它赋值“2”,标签为“中间组”。
5)各维度总分中如果有缺失,请用该维度的平均分进行替换。
结果分析一、
(1)
data class;
input id biochemistry$physical pathology;
label id='学号' biochemistry='生化' physical='物理' pathology='病理';
cards;
083 68 71 65
084 74 61 68
085 73 75 46
087 75 71 68
084 85 85 87
085 78 79 75
086 80 76 79
089 67 73 71
118 70 54 75
083 70 66 84
084 62 73 65
099 82 70 79
;
run;
proc print data=class label;
run;
(2)
(3)
data class;
input id biochemistry $ physical $ pathology $ ave $ @@; label id='学号' biochemistry='生化' physical='物理' pathology='病理';
ave=mean(biochemistry,physical,pathology);
if ave<60then ave='E';
if60<=ave<70then ave='D';
if70<=ave<=79then ave='C';
if80<=ave<=89then ave='B';
if90<=ave<=100then ave='A';
return;
cards;
083 68 71 65
084 74 61 68
085 73 75 46
087 75 71 68
084 85 85 87
085 78 79 75
086 80 76 79
089 67 73 71
118 70 54 75
083 70 66 84
084 62 73 65
099 82 70 79
;
proc print;
run;
二.
6.
data student;
infile'c:\sasdt\student.txt';
length id $18;
length name $16;
input id $ name $ English conputer; age= 2015-input(substr(id,7,4),4.); if mod(substr(compress(id),17,1),2) then sex='1';
else sex='2';
drop id;
run;
data sas7bdat.mstu;
set student;
if sex=1;
keep name age sex English computer; data sas7bdat.fstu;
set student;
if sex=2;
keep name age sex English computer; run;
proc print;
run;
7.
data student;
infile'c:\sasdt\student.txt';
length id $18;
length name $16;
input id $ name $ English conputer; age= 2015-input(substr(id,7,4),4.); if mod(substr(compress(id),17,1),2) then sex='1';
else sex='2';
drop id;
run;
data sas7bdat.stu90;
set student;
where English>90 and conputer>90; run;
proc print;
run;
三.
首先导入数据集
data liangbiao;
MERGE D1 D2;
data lb;
set liangbiao D3;
proc export data=lb outfile="d:\cym\SAS作业\量表.sav"
REPLACE ;
data lb;
array lb[72] a1-a50 b1-b22;
set lb;
lb(1)=6-lb(1);lb(5)=6-lb(5);lb(30)=6-lb(30);lb(43)=6-lb(43);
lb(49)=6-lb(49);lb(52)=6-lb(52);lb(56)=6-lb(56);lb(69)=6-lb(69);
sum1=sum(of a1-a25);
sum2=sum(of a26-a50);
sum3=sum(of b1-b22);
data lb;
set lb;
proc standard data=lb out=lb replace;
var sum1 sum2 sum3;
run;
proc sort data=lb;
by sum3;
data cheng;
input group @@;
datalines;
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
run;
data lg;
MERGE lb cheng;
run;
data lg;
set lg;
if (group = 1) then sum='高分组';
if (group = 2) then sum='中间组';
if (group = 3) then sum='低分组';
run;
结果如下:
成
绩教师签名。