|
/*建立逻辑库gpa*/
libname gpa 'f:\gpa';/*读入数据,建立数据集*/
data gpa.gpa;
infile 'f:\gpa\gpa.txt';
input ID$ 1-5 Semester 7-9 Course$ 11-20 credits 22-24 scores$ 26-27;
label ID='学生ID'
Semester='学期代号'
Course='课程代号'
credits='学分'
scores='成绩';
run;
/*计算GPA*/
data gpa.gpa;
set gpa.gpa;
select(scores);
when('A') gpa=4.0;
when('A-') gpa=3.7;
when('B+') gpa=3.4;
when('B') gpa=3.0;
when('B-') gpa=2.7;
when('C+') gpa=2.4;
when('C') gpa=2.0;
when('C-') gpa=1.7;
when('D+') gpa=1.4;
when('D') gpa=1.0;
when('D-') gpa=0.7;
otherwise gpa=0;
end;
run;
/*计算每学期GPA, 每学期学分数量,课程数量*/
proc sql;
create table gpa.sgpa as
(select distinct ID,semester,sum(credits*gpa) as sgpa,sum(credits) as credits label=’每学期学分数量’,count(course) as counum label=’每学期学课程数’
from gpa.gpa
group by id,semester);
/*计算累计的绩点成绩*/
data gpa.sgpa;
retain _numeric_ _character_ cgpa 0;
label cgpa='按学期逐渐累计的绩点成绩';
set gpa.sgpa;
by ID semester;
if first.ID then cgpa=0;
cgpa=cgpa+sgpa;
run;
/*report, 按照学生的ID和 Semester*/
proc report data=gpa.sgpa;
run;
|