172.GENERATING RANDOM STUDENT DATA IN SAS | USING DATA STEP | CREATING ARRAYS | RANDOM NUMBER GENERATION WITH RANUNI | CONDITIONAL DATA OUTPUT | PROC PRINT FOR DATA DISPLAY | PROC FREQ FOR CLASS DISTRIBUTION FINAL REPORT GENERATION USING PROC REPORT
- Get link
- X
- Other Apps
GENERATING RANDOM STUDENT DATA IN SAS | USING DATA STEP | CREATING ARRAYS | RANDOM NUMBER GENERATION WITH RANUNI | CONDITIONAL DATA OUTPUT | PROC PRINT FOR DATA DISPLAY | PROC FREQ FOR CLASS DISTRIBUTION | FINAL REPORT GENERATION USING PROC REPORT
/*Creating a new dataset of School*/
Data School;
Array Class[5] $10 _Temporary_ ('Class6','Class7','Class8','Class9','Class10');
Array Subject[3] $15 _Temporary_ ('Math','Science','English');
Do Roll_No = 1 To 20;
Class_Index = Ceil(Ranuni(123)*5);
Class_Name = Class(Class_Index);
Num_Sub = Ceil(Ranuni(123)*3);
Do Sub_Id = 1 To Num_Sub;
Subject_Name = Subject(Sub_Id);
Output;
End;
End;
Drop Class_Index Num_Sub Sub_Id;
Run;
Proc Print;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 1 | Class9 | Math |
2 | 2 | Class6 | Math |
3 | 2 | Class6 | Science |
4 | 2 | Class6 | English |
5 | 3 | Class7 | Math |
6 | 4 | Class9 | Math |
7 | 4 | Class9 | Science |
8 | 5 | Class6 | Math |
9 | 6 | Class9 | Math |
10 | 6 | Class9 | Science |
11 | 7 | Class10 | Math |
12 | 8 | Class9 | Math |
13 | 8 | Class9 | Science |
14 | 9 | Class8 | Math |
15 | 9 | Class8 | Science |
16 | 9 | Class8 | English |
17 | 10 | Class6 | Math |
18 | 10 | Class6 | Science |
19 | 10 | Class6 | English |
20 | 11 | Class9 | Math |
21 | 11 | Class9 | Science |
22 | 11 | Class9 | English |
23 | 12 | Class9 | Math |
24 | 13 | Class8 | Math |
25 | 13 | Class8 | Science |
26 | 13 | Class8 | English |
27 | 14 | Class6 | Math |
28 | 14 | Class6 | Science |
29 | 15 | Class9 | Math |
30 | 15 | Class9 | Science |
31 | 16 | Class8 | Math |
32 | 17 | Class8 | Math |
33 | 18 | Class8 | Math |
34 | 18 | Class8 | Science |
35 | 19 | Class6 | Math |
36 | 20 | Class8 | Math |
37 | 20 | Class8 | Science |
38 | 20 | Class8 | English |
/* Using Select Statement */
Data Class6
Class7
Class8
Class9
Class10;
Set School;
Select (Class_Name);
When ('Class6') Output Class6;
When ('Class7') Output Class7;
When ('Class8') Output Class8;
When ('Class9') Output Class9;
When ('Class10') Output Class10;
Otherwise;
End;
Run;
Proc Print Data=Class6;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 2 | Class6 | Math |
2 | 2 | Class6 | Science |
3 | 2 | Class6 | English |
4 | 5 | Class6 | Math |
5 | 10 | Class6 | Math |
6 | 10 | Class6 | Science |
7 | 10 | Class6 | English |
8 | 14 | Class6 | Math |
9 | 14 | Class6 | Science |
10 | 19 | Class6 | Math |
Proc Print Data=Class7;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 3 | Class7 | Math |
Proc Print Data=Class8;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 9 | Class8 | Math |
2 | 9 | Class8 | Science |
3 | 9 | Class8 | English |
4 | 13 | Class8 | Math |
5 | 13 | Class8 | Science |
6 | 13 | Class8 | English |
7 | 16 | Class8 | Math |
8 | 17 | Class8 | Math |
9 | 18 | Class8 | Math |
10 | 18 | Class8 | Science |
11 | 20 | Class8 | Math |
12 | 20 | Class8 | Science |
13 | 20 | Class8 | English |
Proc Print Data=Class9;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 1 | Class9 | Math |
2 | 4 | Class9 | Math |
3 | 4 | Class9 | Science |
4 | 6 | Class9 | Math |
5 | 6 | Class9 | Science |
6 | 8 | Class9 | Math |
7 | 8 | Class9 | Science |
8 | 11 | Class9 | Math |
9 | 11 | Class9 | Science |
10 | 11 | Class9 | English |
11 | 12 | Class9 | Math |
12 | 15 | Class9 | Math |
13 | 15 | Class9 | Science |
Proc Print Data=Class10;
Run;
Output:
Obs | Roll_No | Class_Name | Subject_Name |
---|---|---|---|
1 | 7 | Class10 | Math |
/*Frequency Distribution of Classes and Subjects*/
proc freq data=SCHOOL;
tables CLASS_NAME SUBJECT_NAME / nocum nopercent;
run;
Output:
Class_Name | Frequency |
---|---|
Class10 | 1 |
Class6 | 10 |
Class7 | 1 |
Class8 | 13 |
Class9 | 13 |
Subject_Name | Frequency |
---|---|
English | 6 |
Math | 20 |
Science | 12 |
/*Aggregated Analysis*/
proc sql;
create table ClassSummary as
select CLASS_NAME,
count(distinct ROLL_NO) as Total_Students,
count(*) / count(distinct ROLL_NO) as Avg_Subjects_Per_Student
from SCHOOL
group by CLASS_NAME;
quit;
proc print data=ClassSummary;
run;
Output:
Obs | Class_Name | Total_Students | Avg_Subjects_Per_Student |
---|---|---|---|
1 | Class10 | 1 | 1.00000 |
2 | Class6 | 5 | 2.00000 |
3 | Class7 | 1 | 1.00000 |
4 | Class8 | 6 | 2.16667 |
5 | Class9 | 7 | 1.85714 |
/*Detailed Report*/
proc report data=SCHOOL nowd;
column ROLL_NO CLASS_NAME SUBJECT_NAME;
define ROLL_NO / group;
define CLASS_NAME / group;
define SUBJECT_NAME / display;
run;
Output:
Roll_No | Class_Name | Subject_Name |
---|---|---|
1 | Class9 | Math |
2 | Class6 | Math |
Science | ||
English | ||
3 | Class7 | Math |
4 | Class9 | Math |
Science | ||
5 | Class6 | Math |
6 | Class9 | Math |
Science | ||
7 | Class10 | Math |
8 | Class9 | Math |
Science | ||
9 | Class8 | Math |
Science | ||
English | ||
10 | Class6 | Math |
Science | ||
English | ||
11 | Class9 | Math |
Science | ||
English | ||
12 | Class9 | Math |
13 | Class8 | Math |
Science | ||
English | ||
14 | Class6 | Math |
Science | ||
15 | Class9 | Math |
Science | ||
16 | Class8 | Math |
17 | Class8 | Math |
18 | Class8 | Math |
Science | ||
19 | Class6 | Math |
20 | Class8 | Math |
Science | ||
English |
- Get link
- X
- Other Apps
Comments
Post a Comment