全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2991 5
2010-12-12
悬赏 150 个论坛币 已解决
Report 1:

制作一个report, 按照学生的ID Semester(学期,从早到晚)排列,report内容里包括:
1.
GPA (每个学生每学期的绩点成绩)
2.
Cumulative GPA (每个学生按学期逐渐累计的绩点成绩)
3.
Credit Hours Earned (每个学生每学期学分数量)
4.
Designation of Class Standing (每个学生每学期课程数量)

原始数据解释:原始数据形如:
复制代码

学生ID: FQ7JO (即第一个@前面的)
Semester 代号: 175 (即第一个@和第二个@之间的东西)
课程代号:ENGL 111
(即第二个@和第三个@之间的东西,好像没有用)
该课的学分: 3.0 (即第三个@和第四个@之间的东西)
该课的成绩:B- (即第四个@和第五个@之间的东西)
GPA计算方式 A: 4.0
A-: 3.7
B+: 3.4
B: 3.0
B-: 2.7
C+ 2.4
C: 2.0
C-:1.7
D+:1.4
D:1.0
D-:0.7
E,UW, IE, WE0.0
其他的成绩如W, P, I, NS, T 都不算在GPA里。
GPA的算法例子:加权平均, 比如一个学生选了四门课,第一门课4个学分,得了A, 第二门3个学分得了B,第三门2个学分得了UW, 第四门课1个学分得了P那这个学生的GPA是:4.0*4+3.0*3+0.0*2/ (4+3+2) = 2.78第四门课没有计算因为P不算GPA.

要求:
1. By ID, Semester with a page break betweenID’s. (SAS报告里面每个学生之间用分页符隔开)
2. Report 里面每个变量都要labeled.
3. 运用PROC SQL 进行queries subsettingdata
4. 运用MACRO 减少重复的code.
5. 运用 PROC REPORT 来做所有的报告
6. 运用ODS 制作网页
7. 运用ARRAYS 简化代码

Students Grades.txt

大小:285.19 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-12-12 15:42:46
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-12 20:20:24
/*建立逻辑库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;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-12 20:23:43
楼主,你的要求还真多,先没考虑宏和数组,代码如下:
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-12 22:59:37
谢谢大家的热心帮助,再过几个小时我将会公布最佳答案。希望各位高手能够继续提供悬赏2,3,4的解答。我会立即充值,把悬赏2和3分别提高到300金币!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-13 09:04:57
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群