SAS Example Programs
Student Results [using if then else]:
data Students;
infile datalines;
input s_id sname $ Maths Physics Chemistry TotalMarks ;
datalines;
101 aaa 80 70 60 210
102 bbb 90 60 40 190
103 ccc 65 50 50 165
104 ddd 95 90 85 270
105 eee 30 25 35 90
;
run;
data Result; set Students;
if TotalMarks > 250 then FinalResult = 'Distinction';
else if 201 <= TotalMarks <= 250 then FinalResult = 'First div';
else if 101 <= Totalmarks <= 200 then FinalResult = 'Second div';
else if 51 <= TotalMarks <= 100 then FinalResult = 'Third div';
else if TotalMarks < 50 then FinalResult = 'Poor';
run;
proc print data = Result;
run;
output:
Obs
s_id sname
Maths
Physics
Chemistry
TotalMarks FinalResult
101 aaa
80
70
60
210 First div
102 bbb
90
60
40
190 Second div
103 ccc
65
50
50
165 Second div
104 ddd
95
90
85
270 Distinction
105 eee
30
25
35
90 Third div
Modified Program [only 1 datastep program]:
data Students;
infile datalines;
input s_id sname $ Maths Physics Chemistry TotalMarks ;
if TotalMarks >= 250 then FinalResult = 'Distinction';
else if TotalMarks >= 200 then FinalResult = 'First div';
else if Totalmarks >= 100 then FinalResult = 'Second div';
else if TotalMarks >= 50 then FinalResult = 'Third div';
else if TotalMarks < 50 then FinalResult = 'Poor';
datalines;
101 aaa 80 70 60 210
102 bbb 90 60 40 190
103 ccc 65 50 50 165
104 ddd 95 90 85 270
105 eee 30 25 35 90
;
run;
proc print data = Students;
run;
Students marks program [using Do statement]
data Test;
infile datalines;
input subj $ marks ;
datalines;
maths 90
physics 70
chemistry 50
biology 34
;
run;
data AnnualTest; set Test;
if marks >= 80 then do;
Grade = 'A' ; Result = 'Distinction'; end;
else if marks >= 60 then do;
Grade = 'B' ; Result = 'Above Avg' ; end;
else if marks >= 35 then do;
Grade = 'C' ; Result = 'Below Avg' ; end;
else if marks < 35 then do;
Grade = 'D' ; Result = 'Fail' ; end;
run;
proc print data = AnnualTest;
format Result $char12. ;
run;
output:
Obs subj
marks Grade
Result
1 maths
90 A
Distinction
2 physics
70 B
Above Avg
3 chemistr
50 C
Below Avg
Obs subj
4 biology
marks Grade
Result
34 D
Fail
Running Total Program
data dailyrevenue;
infile datalines;
input day $ revenue;
datalines;
mon 1000
tue 2500
wed 3000
thu 4000
fri 5000
;
run;
data TotalRev; set dailyrevenue;
total + revenue;
run;
proc print data = TotalRev;
run;
output:
Obs day
revenue
total
1 mon
1000
1000
2 tue
2500
3500
3 wed
3000
6500
4 thu
4000
10500
5 fri
5000
15500