238.COMPREHENSIVE SCHOOL CLASS PERFORMANCE ANALYSIS USING SAS PROCS, SQL, AND MACROS: A DATA-DRIVEN APPROACH TO EVALUATE SUBJECT-WISE SCORES, STRENGTH, AND TEACHER ALLOCATIONS ACROSS MULTIPLE GRADES
- Get link
- X
- Other Apps
COMPREHENSIVE SCHOOL CLASS PERFORMANCE ANALYSIS USING SAS PROCS, SQL, AND MACROS: A DATA-DRIVEN APPROACH TO EVALUATE SUBJECT-WISE SCORES, STRENGTH, AND TEACHER ALLOCATIONS ACROSS MULTIPLE GRADES
/*Creating A Dataset Classes Of School*/
Step 1: Creating the Dataset
options nocenter;
data School_Classes;
length ClassName $10 Section $2 Subject $20 ClassTeacher $20
PeriodTime $15 ClassroomNo $5 Building $10;
input ClassName $ Section $ Subject $ ClassTeacher $ PeriodTime $
ClassroomNo $ Building $ Strength AvgScore PassRate;
datalines;
Grade1 A Math Mr.Sharma 9:00-9:45 A101 BlockA 30 78.5 90
Grade1 B English Mrs.Verma 10:00-10:45 A102 BlockA 32 82.0 95
Grade1 C Science Mr.Patil 11:00-11:45 A103 BlockA 28 75.4 85
Grade2 A Math Ms.Rao 9:00-9:45 B101 BlockB 35 80.2 93
Grade2 B English Mr.Joseph 10:00-10:45 B102 BlockB 33 85.6 96
Grade2 C Science Mrs.Pinto 11:00-11:45 B103 BlockB 31 79.3 91
Grade3 A Math Mr.Kumar 9:00-9:45 C101 BlockC 29 83.7 94
Grade3 B English Ms.Sonia 10:00-10:45 C102 BlockC 30 84.8 97
Grade3 C Science Mrs.Ruby 11:00-11:45 C103 BlockC 34 81.2 92
Grade4 A Math Mr.Vijay 9:00-9:45 D101 BlockD 36 79.9 89
Grade4 B English Mr.Naresh 10:00-10:45 D102 BlockD 33 87.4 96
Grade4 C Science Ms.Latha 11:00-11:45 D103 BlockD 32 76.8 87
Grade5 A Math Mrs.Isha 9:00-9:45 E101 BlockE 31 81.6 93
Grade5 B English Mr.David 10:00-10:45 E102 BlockE 34 89.0 98
Grade5 C Science Ms.Reema 11:00-11:45 E103 BlockE 30 77.1 90
Grade6 A Math Mr.Manoj 9:00-9:45 F101 BlockF 28 80.4 91
Grade6 B English Ms.Lavanya 10:00-10:45 F102 BlockF 29 86.2 95
Grade6 C Science Mr.Murthy 11:00-11:45 F103 BlockF 30 82.9 94
Grade7 A Math Mr.Amit 9:00-9:45 G101 BlockG 32 78.6 90
Grade7 B English Mrs.Maya 10:00-10:45 G102 BlockG 31 85.5 96
Grade7 C Science Ms.Tanya 11:00-11:45 G103 BlockG 33 79.5 89
Grade8 A Math Mr.Ganesh 9:00-9:45 H101 BlockH 35 83.2 92
Grade8 B English Mr.Vinod 10:00-10:45 H102 BlockH 30 88.4 97
Grade8 C Science Mrs.Anuja 11:00-11:45 H103 BlockH 31 81.5 93
Grade9 A Math Mr.Ram 9:00-9:45 I101 BlockI 33 84.0 94
Grade9 B English Ms.Nithya 10:00-10:45 I102 BlockI 29 90.1 99
Grade9 C Science Mr.Tom 11:00-11:45 I103 BlockI 30 79.0 88
;
run;
proc print;run;
Output:
Obs | ClassName | Section | Subject | ClassTeacher | PeriodTime | ClassroomNo | Building | Strength | AvgScore | PassRate |
---|---|---|---|---|---|---|---|---|---|---|
1 | Grade1 | A | Math | Mr.Sharma | 9:00-9:45 | A101 | BlockA | 30 | 78.5 | 90 |
2 | Grade1 | B | English | Mrs.Verma | 10:00-10:45 | A102 | BlockA | 32 | 82.0 | 95 |
3 | Grade1 | C | Science | Mr.Patil | 11:00-11:45 | A103 | BlockA | 28 | 75.4 | 85 |
4 | Grade2 | A | Math | Ms.Rao | 9:00-9:45 | B101 | BlockB | 35 | 80.2 | 93 |
5 | Grade2 | B | English | Mr.Joseph | 10:00-10:45 | B102 | BlockB | 33 | 85.6 | 96 |
6 | Grade2 | C | Science | Mrs.Pinto | 11:00-11:45 | B103 | BlockB | 31 | 79.3 | 91 |
7 | Grade3 | A | Math | Mr.Kumar | 9:00-9:45 | C101 | BlockC | 29 | 83.7 | 94 |
8 | Grade3 | B | English | Ms.Sonia | 10:00-10:45 | C102 | BlockC | 30 | 84.8 | 97 |
9 | Grade3 | C | Science | Mrs.Ruby | 11:00-11:45 | C103 | BlockC | 34 | 81.2 | 92 |
10 | Grade4 | A | Math | Mr.Vijay | 9:00-9:45 | D101 | BlockD | 36 | 79.9 | 89 |
11 | Grade4 | B | English | Mr.Naresh | 10:00-10:45 | D102 | BlockD | 33 | 87.4 | 96 |
12 | Grade4 | C | Science | Ms.Latha | 11:00-11:45 | D103 | BlockD | 32 | 76.8 | 87 |
13 | Grade5 | A | Math | Mrs.Isha | 9:00-9:45 | E101 | BlockE | 31 | 81.6 | 93 |
14 | Grade5 | B | English | Mr.David | 10:00-10:45 | E102 | BlockE | 34 | 89.0 | 98 |
15 | Grade5 | C | Science | Ms.Reema | 11:00-11:45 | E103 | BlockE | 30 | 77.1 | 90 |
16 | Grade6 | A | Math | Mr.Manoj | 9:00-9:45 | F101 | BlockF | 28 | 80.4 | 91 |
17 | Grade6 | B | English | Ms.Lavanya | 10:00-10:45 | F102 | BlockF | 29 | 86.2 | 95 |
18 | Grade6 | C | Science | Mr.Murthy | 11:00-11:45 | F103 | BlockF | 30 | 82.9 | 94 |
19 | Grade7 | A | Math | Mr.Amit | 9:00-9:45 | G101 | BlockG | 32 | 78.6 | 90 |
20 | Grade7 | B | English | Mrs.Maya | 10:00-10:45 | G102 | BlockG | 31 | 85.5 | 96 |
21 | Grade7 | C | Science | Ms.Tanya | 11:00-11:45 | G103 | BlockG | 33 | 79.5 | 89 |
22 | Grade8 | A | Math | Mr.Ganesh | 9:00-9:45 | H101 | BlockH | 35 | 83.2 | 92 |
23 | Grade8 | B | English | Mr.Vinod | 10:00-10:45 | H102 | BlockH | 30 | 88.4 | 97 |
24 | Grade8 | C | Science | Mrs.Anuja | 11:00-11:45 | H103 | BlockH | 31 | 81.5 | 93 |
25 | Grade9 | A | Math | Mr.Ram | 9:00-9:45 | I101 | BlockI | 33 | 84.0 | 94 |
26 | Grade9 | B | English | Ms.Nithya | 10:00-10:45 | I102 | BlockI | 29 | 90.1 | 99 |
27 | Grade9 | C | Science | Mr.Tom | 11:00-11:45 | I103 | BlockI | 30 | 79.0 | 88 |
Step 2: Data Inspection – PROC PRINT and PROC CONTENTS
proc print data=School_Classes noobs;
title "Complete School Classes Dataset";
run;
Output:
Complete School Classes Dataset |
ClassName | Section | Subject | ClassTeacher | PeriodTime | ClassroomNo | Building | Strength | AvgScore | PassRate |
---|---|---|---|---|---|---|---|---|---|
Grade1 | A | Math | Mr.Sharma | 9:00-9:45 | A101 | BlockA | 30 | 78.5 | 90 |
Grade1 | B | English | Mrs.Verma | 10:00-10:45 | A102 | BlockA | 32 | 82.0 | 95 |
Grade1 | C | Science | Mr.Patil | 11:00-11:45 | A103 | BlockA | 28 | 75.4 | 85 |
Grade2 | A | Math | Ms.Rao | 9:00-9:45 | B101 | BlockB | 35 | 80.2 | 93 |
Grade2 | B | English | Mr.Joseph | 10:00-10:45 | B102 | BlockB | 33 | 85.6 | 96 |
Grade2 | C | Science | Mrs.Pinto | 11:00-11:45 | B103 | BlockB | 31 | 79.3 | 91 |
Grade3 | A | Math | Mr.Kumar | 9:00-9:45 | C101 | BlockC | 29 | 83.7 | 94 |
Grade3 | B | English | Ms.Sonia | 10:00-10:45 | C102 | BlockC | 30 | 84.8 | 97 |
Grade3 | C | Science | Mrs.Ruby | 11:00-11:45 | C103 | BlockC | 34 | 81.2 | 92 |
Grade4 | A | Math | Mr.Vijay | 9:00-9:45 | D101 | BlockD | 36 | 79.9 | 89 |
Grade4 | B | English | Mr.Naresh | 10:00-10:45 | D102 | BlockD | 33 | 87.4 | 96 |
Grade4 | C | Science | Ms.Latha | 11:00-11:45 | D103 | BlockD | 32 | 76.8 | 87 |
Grade5 | A | Math | Mrs.Isha | 9:00-9:45 | E101 | BlockE | 31 | 81.6 | 93 |
Grade5 | B | English | Mr.David | 10:00-10:45 | E102 | BlockE | 34 | 89.0 | 98 |
Grade5 | C | Science | Ms.Reema | 11:00-11:45 | E103 | BlockE | 30 | 77.1 | 90 |
Grade6 | A | Math | Mr.Manoj | 9:00-9:45 | F101 | BlockF | 28 | 80.4 | 91 |
Grade6 | B | English | Ms.Lavanya | 10:00-10:45 | F102 | BlockF | 29 | 86.2 | 95 |
Grade6 | C | Science | Mr.Murthy | 11:00-11:45 | F103 | BlockF | 30 | 82.9 | 94 |
Grade7 | A | Math | Mr.Amit | 9:00-9:45 | G101 | BlockG | 32 | 78.6 | 90 |
Grade7 | B | English | Mrs.Maya | 10:00-10:45 | G102 | BlockG | 31 | 85.5 | 96 |
Grade7 | C | Science | Ms.Tanya | 11:00-11:45 | G103 | BlockG | 33 | 79.5 | 89 |
Grade8 | A | Math | Mr.Ganesh | 9:00-9:45 | H101 | BlockH | 35 | 83.2 | 92 |
Grade8 | B | English | Mr.Vinod | 10:00-10:45 | H102 | BlockH | 30 | 88.4 | 97 |
Grade8 | C | Science | Mrs.Anuja | 11:00-11:45 | H103 | BlockH | 31 | 81.5 | 93 |
Grade9 | A | Math | Mr.Ram | 9:00-9:45 | I101 | BlockI | 33 | 84.0 | 94 |
Grade9 | B | English | Ms.Nithya | 10:00-10:45 | I102 | BlockI | 29 | 90.1 | 99 |
Grade9 | C | Science | Mr.Tom | 11:00-11:45 | I103 | BlockI | 30 | 79.0 | 88 |
proc contents data=School_Classes;
title "Variable Metadata of School_Classes Dataset";
run;
Output:
Variable Metadata of School_Classes Dataset |
Data Set Name | WORK.SCHOOL_CLASSES | Observations | 27 |
---|---|---|---|
Member Type | DATA | Variables | 10 |
Engine | V9 | Indexes | 0 |
Created | 14/09/2015 00:27:48 | Observation Length | 112 |
Last Modified | 14/09/2015 00:27:48 | Deleted Observations | 0 |
Protection | Compressed | NO | |
Data Set Type | Sorted | NO | |
Label | |||
Data Representation | WINDOWS_64 | ||
Encoding | wlatin1 Western (Windows) |
Engine/Host Dependent Information | |
---|---|
Data Set Page Size | 65536 |
Number of Data Set Pages | 1 |
First Data Page | 1 |
Max Obs per Page | 584 |
Obs in First Data Page | 27 |
Number of Data Set Repairs | 0 |
ExtendObsCounter | YES |
Filename | C:\Users\Lenovo\AppData\Local\Temp\SAS Temporary Files\_TD576_DESKTOP-QFAA4KV_\school_classes.sas7bdat |
Release Created | 9.0401M2 |
Host Created | X64_8HOME |
Alphabetic List of Variables and Attributes | |||
---|---|---|---|
# | Variable | Type | Len |
9 | AvgScore | Num | 8 |
7 | Building | Char | 10 |
1 | ClassName | Char | 10 |
4 | ClassTeacher | Char | 20 |
6 | ClassroomNo | Char | 5 |
10 | PassRate | Num | 8 |
5 | PeriodTime | Char | 15 |
2 | Section | Char | 2 |
8 | Strength | Num | 8 |
3 | Subject | Char | 20 |
Step 3: Frequency Analysis – PROC FREQ
proc freq data=School_Classes;
tables ClassName Section Subject Building;
title "Frequency Distribution of Class Variables";
run;
Output:
Frequency Distribution of Class Variables |
ClassName | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
Grade1 | 3 | 11.11 | 3 | 11.11 |
Grade2 | 3 | 11.11 | 6 | 22.22 |
Grade3 | 3 | 11.11 | 9 | 33.33 |
Grade4 | 3 | 11.11 | 12 | 44.44 |
Grade5 | 3 | 11.11 | 15 | 55.56 |
Grade6 | 3 | 11.11 | 18 | 66.67 |
Grade7 | 3 | 11.11 | 21 | 77.78 |
Grade8 | 3 | 11.11 | 24 | 88.89 |
Grade9 | 3 | 11.11 | 27 | 100.00 |
Section | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
A | 9 | 33.33 | 9 | 33.33 |
B | 9 | 33.33 | 18 | 66.67 |
C | 9 | 33.33 | 27 | 100.00 |
Subject | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
English | 9 | 33.33 | 9 | 33.33 |
Math | 9 | 33.33 | 18 | 66.67 |
Science | 9 | 33.33 | 27 | 100.00 |
Building | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
BlockA | 3 | 11.11 | 3 | 11.11 |
BlockB | 3 | 11.11 | 6 | 22.22 |
BlockC | 3 | 11.11 | 9 | 33.33 |
BlockD | 3 | 11.11 | 12 | 44.44 |
BlockE | 3 | 11.11 | 15 | 55.56 |
BlockF | 3 | 11.11 | 18 | 66.67 |
BlockG | 3 | 11.11 | 21 | 77.78 |
BlockH | 3 | 11.11 | 24 | 88.89 |
BlockI | 3 | 11.11 | 27 | 100.00 |
Step 4: Descriptive Stats – PROC MEANS
proc means data=School_Classes mean std min max maxdec=2;
var Strength AvgScore PassRate;
class Subject;
title "Subject-wise Summary Statistics";
run;
Output:
Subject-wise Summary Statistics |
Subject | N Obs | Variable | Mean | Std Dev | Minimum | Maximum | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
English | 9 |
|
|
|
|
| |||||||||||||||
Math | 9 |
|
|
|
|
| |||||||||||||||
Science | 9 |
|
|
|
|
|
Step 5: Sorting the Data – PROC SORT
proc sort data=School_Classes out=Sorted_Classes;
by descending AvgScore;
run;
proc print data=Sorted_Classes (obs=10);
title "Top 10 Classes by Average Score";
run;
Output:
Top 10 Classes by Average Score |
Obs | ClassName | Section | Subject | ClassTeacher | PeriodTime | ClassroomNo | Building | Strength | AvgScore | PassRate |
---|---|---|---|---|---|---|---|---|---|---|
1 | Grade9 | B | English | Ms.Nithya | 10:00-10:45 | I102 | BlockI | 29 | 90.1 | 99 |
2 | Grade5 | B | English | Mr.David | 10:00-10:45 | E102 | BlockE | 34 | 89.0 | 98 |
3 | Grade8 | B | English | Mr.Vinod | 10:00-10:45 | H102 | BlockH | 30 | 88.4 | 97 |
4 | Grade4 | B | English | Mr.Naresh | 10:00-10:45 | D102 | BlockD | 33 | 87.4 | 96 |
5 | Grade6 | B | English | Ms.Lavanya | 10:00-10:45 | F102 | BlockF | 29 | 86.2 | 95 |
6 | Grade2 | B | English | Mr.Joseph | 10:00-10:45 | B102 | BlockB | 33 | 85.6 | 96 |
7 | Grade7 | B | English | Mrs.Maya | 10:00-10:45 | G102 | BlockG | 31 | 85.5 | 96 |
8 | Grade3 | B | English | Ms.Sonia | 10:00-10:45 | C102 | BlockC | 30 | 84.8 | 97 |
9 | Grade9 | A | Math | Mr.Ram | 9:00-9:45 | I101 | BlockI | 33 | 84.0 | 94 |
10 | Grade3 | A | Math | Mr.Kumar | 9:00-9:45 | C101 | BlockC | 29 | 83.7 | 94 |
Step 6: Using PROC FORMAT for better readability
proc format;
value scorefmt
low-79 = 'Needs Improvement'
80-89 = 'Satisfactory'
90-high = 'Excellent';
run;
data Formatted_Classes;
set School_Classes;
Score_Category = put(AvgScore, scorefmt.);
run;
proc print;run;
Output:
Obs | ClassName | Section | Subject | ClassTeacher | PeriodTime | ClassroomNo | Building | Strength | AvgScore | PassRate | Score_Category |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | Grade1 | A | Math | Mr.Sharma | 9:00-9:45 | A101 | BlockA | 30 | 78.5 | 90 | Needs Improvement |
2 | Grade1 | B | English | Mrs.Verma | 10:00-10:45 | A102 | BlockA | 32 | 82.0 | 95 | Satisfactory |
3 | Grade1 | C | Science | Mr.Patil | 11:00-11:45 | A103 | BlockA | 28 | 75.4 | 85 | Needs Improvement |
4 | Grade2 | A | Math | Ms.Rao | 9:00-9:45 | B101 | BlockB | 35 | 80.2 | 93 | Satisfactory |
5 | Grade2 | B | English | Mr.Joseph | 10:00-10:45 | B102 | BlockB | 33 | 85.6 | 96 | Satisfactory |
6 | Grade2 | C | Science | Mrs.Pinto | 11:00-11:45 | B103 | BlockB | 31 | 79.3 | 91 | 79.3 |
7 | Grade3 | A | Math | Mr.Kumar | 9:00-9:45 | C101 | BlockC | 29 | 83.7 | 94 | Satisfactory |
8 | Grade3 | B | English | Ms.Sonia | 10:00-10:45 | C102 | BlockC | 30 | 84.8 | 97 | Satisfactory |
9 | Grade3 | C | Science | Mrs.Ruby | 11:00-11:45 | C103 | BlockC | 34 | 81.2 | 92 | Satisfactory |
10 | Grade4 | A | Math | Mr.Vijay | 9:00-9:45 | D101 | BlockD | 36 | 79.9 | 89 | 79.9 |
11 | Grade4 | B | English | Mr.Naresh | 10:00-10:45 | D102 | BlockD | 33 | 87.4 | 96 | Satisfactory |
12 | Grade4 | C | Science | Ms.Latha | 11:00-11:45 | D103 | BlockD | 32 | 76.8 | 87 | Needs Improvement |
13 | Grade5 | A | Math | Mrs.Isha | 9:00-9:45 | E101 | BlockE | 31 | 81.6 | 93 | Satisfactory |
14 | Grade5 | B | English | Mr.David | 10:00-10:45 | E102 | BlockE | 34 | 89.0 | 98 | Satisfactory |
15 | Grade5 | C | Science | Ms.Reema | 11:00-11:45 | E103 | BlockE | 30 | 77.1 | 90 | Needs Improvement |
16 | Grade6 | A | Math | Mr.Manoj | 9:00-9:45 | F101 | BlockF | 28 | 80.4 | 91 | Satisfactory |
17 | Grade6 | B | English | Ms.Lavanya | 10:00-10:45 | F102 | BlockF | 29 | 86.2 | 95 | Satisfactory |
18 | Grade6 | C | Science | Mr.Murthy | 11:00-11:45 | F103 | BlockF | 30 | 82.9 | 94 | Satisfactory |
19 | Grade7 | A | Math | Mr.Amit | 9:00-9:45 | G101 | BlockG | 32 | 78.6 | 90 | Needs Improvement |
20 | Grade7 | B | English | Mrs.Maya | 10:00-10:45 | G102 | BlockG | 31 | 85.5 | 96 | Satisfactory |
21 | Grade7 | C | Science | Ms.Tanya | 11:00-11:45 | G103 | BlockG | 33 | 79.5 | 89 | 79.5 |
22 | Grade8 | A | Math | Mr.Ganesh | 9:00-9:45 | H101 | BlockH | 35 | 83.2 | 92 | Satisfactory |
23 | Grade8 | B | English | Mr.Vinod | 10:00-10:45 | H102 | BlockH | 30 | 88.4 | 97 | Satisfactory |
24 | Grade8 | C | Science | Mrs.Anuja | 11:00-11:45 | H103 | BlockH | 31 | 81.5 | 93 | Satisfactory |
25 | Grade9 | A | Math | Mr.Ram | 9:00-9:45 | I101 | BlockI | 33 | 84.0 | 94 | Satisfactory |
26 | Grade9 | B | English | Ms.Nithya | 10:00-10:45 | I102 | BlockI | 29 | 90.1 | 99 | Excellent |
27 | Grade9 | C | Science | Mr.Tom | 11:00-11:45 | I103 | BlockI | 30 | 79.0 | 88 | Needs Improvement |
proc freq data=Formatted_Classes;
tables Score_Category;
title "Score Category Distribution";
run;
Output:
Score Category Distribution |
Score_Category | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
79.3 | 1 | 3.70 | 1 | 3.70 |
79.5 | 1 | 3.70 | 2 | 7.41 |
79.9 | 1 | 3.70 | 3 | 11.11 |
Excellent | 1 | 3.70 | 4 | 14.81 |
Needs Improvement | 6 | 22.22 | 10 | 37.04 |
Satisfactory | 17 | 62.96 | 27 | 100.00 |
Step 7: Using PROC SQL for queries
a) Average Score per Subject
proc sql;
select Subject, avg(AvgScore) as MeanScore format=5.2
from School_Classes
group by Subject;
quit;
Output:
Subject | MeanScore |
---|---|
English | 86.56 |
Math | 81.12 |
Science | 79.19 |
b) Highest Scoring Class per Subject
proc sql;
create table TopClasses as
select Subject, ClassName, Section, max(AvgScore) as MaxScore
from School_Classes
group by Subject;
quit;
proc print data=TopClasses;
title "Top Performing Classes by Subject";
run;
Output:
Top Performing Classes by Subject |
Obs | Subject | ClassName | Section | MaxScore |
---|---|---|---|---|
1 | English | Grade4 | B | 90.1 |
2 | English | Grade6 | B | 90.1 |
3 | English | Grade2 | B | 90.1 |
4 | English | Grade7 | B | 90.1 |
5 | English | Grade1 | B | 90.1 |
6 | English | Grade5 | B | 90.1 |
7 | English | Grade8 | B | 90.1 |
8 | English | Grade9 | B | 90.1 |
9 | English | Grade3 | B | 90.1 |
10 | Math | Grade3 | A | 84.0 |
11 | Math | Grade9 | A | 84.0 |
12 | Math | Grade8 | A | 84.0 |
13 | Math | Grade5 | A | 84.0 |
14 | Math | Grade4 | A | 84.0 |
15 | Math | Grade7 | A | 84.0 |
16 | Math | Grade2 | A | 84.0 |
17 | Math | Grade1 | A | 84.0 |
18 | Math | Grade6 | A | 84.0 |
19 | Science | Grade5 | C | 82.9 |
20 | Science | Grade9 | C | 82.9 |
21 | Science | Grade1 | C | 82.9 |
22 | Science | Grade2 | C | 82.9 |
23 | Science | Grade4 | C | 82.9 |
24 | Science | Grade8 | C | 82.9 |
25 | Science | Grade7 | C | 82.9 |
26 | Science | Grade3 | C | 82.9 |
27 | Science | Grade6 | C | 82.9 |
Step 8: Creating a Macro to Generate Report by Grade
%macro ClassReport(grade);
proc print data=School_Classes;
where ClassName = "&grade";
title "Report for &grade Classes";
run;
proc means data=School_Classes mean std maxdec=2;
where ClassName = "&grade";
var Strength AvgScore PassRate;
title "Statistics for &grade Classes";
run;
%mend;
%ClassReport(Grade5);
Output:
Statistics for Grade5 Classes |
Variable | Mean | Std Dev | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
%ClassReport(Grade7);
Output:
Statistics for Grade7 Classes |
Variable | Mean | Std Dev | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
Step 9: Generate Report – PROC REPORT
proc report data=School_Classes nowd;
column ClassName Section Subject Strength AvgScore PassRate;
define ClassName / group;
define Section / group;
define Subject / group;
define Strength / analysis sum;
define AvgScore / analysis mean format=5.2;
define PassRate / analysis mean format=5.2;
title "Aggregated School Class Performance Report";
run;
Output:
Aggregated School Class Performance Report |
ClassName | Section | Subject | Strength | AvgScore | PassRate |
---|---|---|---|---|---|
Grade1 | A | Math | 30 | 78.50 | 90.00 |
B | English | 32 | 82.00 | 95.00 | |
C | Science | 28 | 75.40 | 85.00 | |
Grade2 | A | Math | 35 | 80.20 | 93.00 |
B | English | 33 | 85.60 | 96.00 | |
C | Science | 31 | 79.30 | 91.00 | |
Grade3 | A | Math | 29 | 83.70 | 94.00 |
B | English | 30 | 84.80 | 97.00 | |
C | Science | 34 | 81.20 | 92.00 | |
Grade4 | A | Math | 36 | 79.90 | 89.00 |
B | English | 33 | 87.40 | 96.00 | |
C | Science | 32 | 76.80 | 87.00 | |
Grade5 | A | Math | 31 | 81.60 | 93.00 |
B | English | 34 | 89.00 | 98.00 | |
C | Science | 30 | 77.10 | 90.00 | |
Grade6 | A | Math | 28 | 80.40 | 91.00 |
B | English | 29 | 86.20 | 95.00 | |
C | Science | 30 | 82.90 | 94.00 | |
Grade7 | A | Math | 32 | 78.60 | 90.00 |
B | English | 31 | 85.50 | 96.00 | |
C | Science | 33 | 79.50 | 89.00 | |
Grade8 | A | Math | 35 | 83.20 | 92.00 |
B | English | 30 | 88.40 | 97.00 | |
C | Science | 31 | 81.50 | 93.00 | |
Grade9 | A | Math | 33 | 84.00 | 94.00 |
B | English | 29 | 90.10 | 99.00 | |
C | Science | 30 | 79.00 | 88.00 |
Step 10: Conditional Logic – Assigning Performance Flags
data Performance_Flags;
retain ClassName Section Subject ClassTeacher PeriodTime ClassroomNo Building Strength AvgScore PassRate ;
length Performance $20;
set School_Classes;
length Performance $12;
if AvgScore >= 85 and PassRate >= 95 then Performance = "Outstanding";
else if AvgScore >= 80 then Performance = "Above Average";
else Performance = "Needs Focus";
run;
proc print;run;
Output:
Obs | ClassName | Section | Subject | ClassTeacher | PeriodTime | ClassroomNo | Building | Strength | AvgScore | PassRate | Performance |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | Grade1 | A | Math | Mr.Sharma | 9:00-9:45 | A101 | BlockA | 30 | 78.5 | 90 | Needs Focus |
2 | Grade1 | B | English | Mrs.Verma | 10:00-10:45 | A102 | BlockA | 32 | 82.0 | 95 | Above Average |
3 | Grade1 | C | Science | Mr.Patil | 11:00-11:45 | A103 | BlockA | 28 | 75.4 | 85 | Needs Focus |
4 | Grade2 | A | Math | Ms.Rao | 9:00-9:45 | B101 | BlockB | 35 | 80.2 | 93 | Above Average |
5 | Grade2 | B | English | Mr.Joseph | 10:00-10:45 | B102 | BlockB | 33 | 85.6 | 96 | Outstanding |
6 | Grade2 | C | Science | Mrs.Pinto | 11:00-11:45 | B103 | BlockB | 31 | 79.3 | 91 | Needs Focus |
7 | Grade3 | A | Math | Mr.Kumar | 9:00-9:45 | C101 | BlockC | 29 | 83.7 | 94 | Above Average |
8 | Grade3 | B | English | Ms.Sonia | 10:00-10:45 | C102 | BlockC | 30 | 84.8 | 97 | Above Average |
9 | Grade3 | C | Science | Mrs.Ruby | 11:00-11:45 | C103 | BlockC | 34 | 81.2 | 92 | Above Average |
10 | Grade4 | A | Math | Mr.Vijay | 9:00-9:45 | D101 | BlockD | 36 | 79.9 | 89 | Needs Focus |
11 | Grade4 | B | English | Mr.Naresh | 10:00-10:45 | D102 | BlockD | 33 | 87.4 | 96 | Outstanding |
12 | Grade4 | C | Science | Ms.Latha | 11:00-11:45 | D103 | BlockD | 32 | 76.8 | 87 | Needs Focus |
13 | Grade5 | A | Math | Mrs.Isha | 9:00-9:45 | E101 | BlockE | 31 | 81.6 | 93 | Above Average |
14 | Grade5 | B | English | Mr.David | 10:00-10:45 | E102 | BlockE | 34 | 89.0 | 98 | Outstanding |
15 | Grade5 | C | Science | Ms.Reema | 11:00-11:45 | E103 | BlockE | 30 | 77.1 | 90 | Needs Focus |
16 | Grade6 | A | Math | Mr.Manoj | 9:00-9:45 | F101 | BlockF | 28 | 80.4 | 91 | Above Average |
17 | Grade6 | B | English | Ms.Lavanya | 10:00-10:45 | F102 | BlockF | 29 | 86.2 | 95 | Outstanding |
18 | Grade6 | C | Science | Mr.Murthy | 11:00-11:45 | F103 | BlockF | 30 | 82.9 | 94 | Above Average |
19 | Grade7 | A | Math | Mr.Amit | 9:00-9:45 | G101 | BlockG | 32 | 78.6 | 90 | Needs Focus |
20 | Grade7 | B | English | Mrs.Maya | 10:00-10:45 | G102 | BlockG | 31 | 85.5 | 96 | Outstanding |
21 | Grade7 | C | Science | Ms.Tanya | 11:00-11:45 | G103 | BlockG | 33 | 79.5 | 89 | Needs Focus |
22 | Grade8 | A | Math | Mr.Ganesh | 9:00-9:45 | H101 | BlockH | 35 | 83.2 | 92 | Above Average |
23 | Grade8 | B | English | Mr.Vinod | 10:00-10:45 | H102 | BlockH | 30 | 88.4 | 97 | Outstanding |
24 | Grade8 | C | Science | Mrs.Anuja | 11:00-11:45 | H103 | BlockH | 31 | 81.5 | 93 | Above Average |
25 | Grade9 | A | Math | Mr.Ram | 9:00-9:45 | I101 | BlockI | 33 | 84.0 | 94 | Above Average |
26 | Grade9 | B | English | Ms.Nithya | 10:00-10:45 | I102 | BlockI | 29 | 90.1 | 99 | Outstanding |
27 | Grade9 | C | Science | Mr.Tom | 11:00-11:45 | I103 | BlockI | 30 | 79.0 | 88 | Needs Focus |
proc freq data=Performance_Flags;
tables Performance;
title "Distribution of Performance Flags";
run;
Output:
Distribution of Performance Flags |
Performance | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
Above Average | 11 | 40.74 | 11 | 40.74 |
Needs Focus | 9 | 33.33 | 20 | 74.07 |
Outstanding | 7 | 25.93 | 27 | 100.00 |
- Get link
- X
- Other Apps
Comments
Post a Comment