楼主: Dylan890328
1457 2

[问答] SAS计算GPA基础题悬赏3,现增至1500金币! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

36%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
3 点
热心指数
0 点
信用等级
0 点
经验
931 点
帖子
76
精华
0
在线时间
184 小时
注册时间
2010-9-15
最后登录
2022-6-22

1500论坛币
Report 3: 数据见“SAS计算GPA基础题悬赏1”,貌似不能重复上传(要求和REPORT 2 一样,除了只计算统计课和数学课(即课程代号里有STAT
或者MATH的课))悬赏1已经解决,现将悬赏2,3,4分别提高至1500论坛币!有问题也可以直接联系本人,QQ:1125120164

制作一个report, 按照学生的ID排列,只计算统计课和数学课(即课程代号里有STAT
或者MATH的课),report内容里包括:
1 GPA (每个学生的总数学课和统计课绩点成绩)
2 Credit Hours Earned(每个学生数学课和统计课学分总数)
3 Graded Credit HoursEarned (每个学生有成绩的数学课和统计课学分总数,即除了得W,P, I, NS, T的学分总数)
4. #Classes Taken (每个学生上的数学课和统计课总数)
5. #of Repeat Classes (每个学生重修的数学课和统计课总数)
6 # of Classes NS, IT (每个学生得NS, IT的数学课和统计课总数)
7 # of Classes W (每个学生得W的数学课和统计课总数)
8. #of Classes E, UW (每个学生得EUW的数学课和统计课总数)
9 # of Classes A (每个学生得A的数学课和统计课总数,A包括A,A-
10 # of Classes B (每个学生得B的课数学课和统计总数,B包括B+,B,B-
11. # of Classes C (每个学生得C的数学课和统计课总数,C包括C+,C,C-
12. # of Classes D (每个学生得D的数学课和统计课总数,D包括D+,D,D-

原始数据解释:原始数据形如:
  1. FQ7JO@175@ENGL 111 @3.0@B-@
复制代码
学生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. Report 里面每个变量都要labeled.
2. 运用PROC SQL 进行queries subsettingdata
3. 运用MACRO 减少重复的code.
4. 运用 PROC REPORT 来做所有的报告
5. 运用ODS 制作网页
6. 运用ARRAYS 简化代码

关键词:GPA 基础题 proc report proc sql classes 基础 SAS 金币 悬赏 GPA
沙发
Dylan890328 发表于 2010-12-13 09:20:00 |只看作者 |坛友微信交流群
悬赏1已经解决,多谢各位高手在1中提供的帮助,现将悬赏2,3,4分别提高至1500论坛币!有问题也可以直接联系本人,QQ:1125120164

使用道具

藤椅
jeozu 发表于 2010-12-13 09:43:19 |只看作者 |坛友微信交流群
  1. proc sql noprint;
  2. create table report2 as
  3. select a.ID
  4.      , sum(a.credits*gpa)/sum(gpa) as GPA label="Total GPA"
  5.      , sum(credits)  as CHE label="Credit Hours Earned"
  6.      , sum(case when scores not in('W','P', 'I', 'NS', 'T') then credits else 0 end) as GCHE label="Graded Credit Hours Earned"
  7.      , count(distinct course) as ClassTaken  label="Class Taken"
  8.      , coalesce(b.repeatclass,0) label="Repeat Cleases"
  9.      , sum(case when scores in("NS","I","T") then 1 else 0 end) as ClassesNSIT   label="of classes NS, I and T"
  10.      , sum(case when scores = "W" then 1 else 0 end) as classesW label="of classes W"
  11.      , sum(case when scores in("E", "UW") then 1 else 0 end) as classesEUW label="of classes E, UW"
  12.      , sum(case when scores like "A_" then 1 else 0 end) as classesA   label="of classes A"
  13.      , sum(case when scores like "B_" then 1 else 0 end) as classesB   label="of classes B"
  14.      , sum(case when scores like "C_" then 1 else 0 end) as classesC   label="of classes C"
  15.      , sum(case when scores like "D_" then 1 else 0 end) as classesD   label="of classes D"
  16. from gpa a
  17. left join
  18. (
  19. select id
  20.      , count(course) as repeatclass
  21. from (
  22.         select id
  23.       , course
  24.           , count(*) as cnt
  25.    from gpa
  26.    group by id, course
  27.    having cnt>1
  28.    )
  29.    group by id
  30. ) b
  31. on a.id=b.id
  32. group by a.ID
  33. ;
  34. quit;
复制代码

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 03:44