Create a Student table with studentnum, quarter, math, science, english marks?
data Student;
input studentnum $ quarter math science english;
datalines;
1001 1 70 80 76
1001 2 80 80 78
1001 3 90 85 80
;
run;
Add 4th quarter marks as a new record and create a new Student_1 table?
data Student_1;
set Student end=eof;
output;
if eof then do;
studentnum = '1001';
quarter = 4;
math = 88;
science = 90;
english = 88;
output;
end;
run;
Add the total for each quarter?
data Student_marks_total;
set Student_1;
total = math + science + english;
run;
Add the average for each column including the total as a new row in the bottom?
data Student_marks_avg;
set Student_marks_total end=eof;
drop sum_math sum_science sum_english sum_total;
retain sum_math sum_science sum_english sum_total 0;
sum_math = sum_math + math;
sum_science = sum_science + science;
sum_english = sum_english + english;
sum_total = sum_total + total;
output;
if eof then do;
studentnum = 'avg';
quarter = .;
math = sum_math / 4;
science = sum_science / 4;
english = sum_english / 4;
total = sum_total / 4;
output;
end;
run;
Sort the Student_1 table by reversing the quarter?
proc sort data=student_1 out=student_1_sort_by_quarter;
by descending quarter;
run;
Combine Sales, Delivery employee datasets as Marketing dataset?
data Sales;
input empno empname $;
datalines;
1001 Daniel
1002 Peter
;
run;
data Delivery;
input empno empname $;
datalines;
1003 Simon
1004 Chris
;
run;
data Marketing;
set Sales Delivery;
run;
Merge a Student's arts and groups marks into a single dataset?
data student_arts;
input studentnum english spanish latin;
datalines;
1001 80 70 78
;
run;
data student_groups;
input studentnum math science history;
datalines;
1001 88 78 89
;
run;
data student_arts_and_groups;
merge student_arts student_groups;
by studentnum;
run;
Is it possible to create a table in a simple way with couple of records and couple of columns?
data blah;
firstname = 'Sean';
lastname = 'Connery';
run;
Or with two records
data blah;
firstname = 'Sean';
lastname = 'Connery';
output;
firstname = 'Matt';
lastname = 'Damon';
output;
run;
Calculate average and grade the student based on this grading guidelines?
failed: below 35
ordinary: > 35 and <= 50
second: > 50 and <= 60
first: > 60 and <= 70
distinction: > 70
data Student;
input studentnum $ math science english;
datalines;
1001 40 50 46
1002 60 60 68
1003 90 85 80
1004 10 20 23
;
run;
data Student_grading;
set Student;
average = (math + science + english) / 3;
average = Round(average, 0.01);
length grading $ 12;
if average > 35 and average <= 50 then grading = 'ordinary';
else if average > 50 and average <= 60 then grading = 'second';
else if average > 60 and average <= 70 then grading = 'first';
else if average > 70 then grading = 'distinction';
else grading = 'failed';
run;
Based on Student marks, decide the grading and add some comments?
(
NOTE: more than one action in if-then statement, so you have to use do)
data student;
input studentnum marks;
datalines;
1001 49
1002 89
1003 34
1004 89
;
run;
data student_report;
set student;
if marks > 50 then do;
result = 'pass';
comments = 'eligible to go to next level';
end;
else do;
result = 'fail';
comments = 'not eligible to next level';
end;
run;
How to add a column with table name?
data report_card;
set student_grading indsname=name;
tablename=scan(name,2);
run;
Create a temp dataset out of Student dataset using SQL?
proc sql;
create table student_temp as
select * from student;
quit;
Add numbers 1 to 5 and give the sum?
data sum_1_to_5;
sum = 0;
do i = 1 to 5;
sum = sum + i;
end;
drop i;
run;
Nik has 10 dollars. Vik has 16 dollars. Keep giving Nik a dollar per day till they both have equal money?
(
Note: Use Do while loop)
data level_the_brothers;
nik_money = 10;
vik_money = 16;
do while (nik_money < vik_money);
nik_money = nik_money + 1;
end;
final_nik_money = nik_money;
final_vik_money = vik_money;
drop nik_money vik_money;
run;
Nik has 10 dollars. Vik has 16 dollars. Keep giving Nik a dollar per day till they both have equal money?
(
Note: Use Do until loop)
data level_the_brothers;
nik_money = 10;
vik_money = 16;
do until (nik_money = vik_money);
nik_money = nik_money + 1;
end;
final_nik_money = nik_money;
final_vik_money = vik_money;
drop nik_money vik_money;
run;
Find the total, average marks of students if all 6 subjects marks are provided for each student?
data array_example;
input studentnum s1 s2 s3 s4 s5 s6;
array s(6) s1-s6; /* Hint - array element names match column names */
marks_total = sum(of s(*));
marks_avg = round(mean(of s(*)), 0.01);
datalines;
1001 78 56 45 34 75 65
1002 56 67 78 89 45 34
;
run;