
A contemporary SAS interview question
Recently, a friend shared a SAS interview question that she faced in one of the Interviews she appeared in.
The question might sound very basic initially but when I heard about the constraints, I found it too be quite tricky one. It required to make a little more use of my grey matter.
Sharing, how I approached to the problem .
Let's say we have the data like below :
Data sum_data;
input val1 : 8. val2: 8. val3 : 8.;cards;
8 . .
9 . 2
10 12 3
13 14 .
;
proc Print;
Run;
Using Data step, a new variable needs to be created which would be the sum of the Val1, Val2 and Val3 and the solution needs to be designed in such a way that there's no use of any SUM function or any IF statement.
So where the complication lies ?
You can not simply used
sum_of_3 = Val1+ Val2 + Val3, due to presence of missing values and also these missing values can't be dealt without IF statements.
Approach 1, I thought ( Failed though L )
First, I thought of using global option MISSING =0 . I used it, but failed to see the Output.
Options missing = 0 ;
Data result ;
set sum_data;
sum_of_3 = Val1+ Val2 + Val3;
Run;
Result was not what was required, but I learned one thing with this. The missing = 0 option actually masks the missing values with 0 value, but keeps the value missing intact.
Run the following code and check yourself :
Options missing = 0 ;
set sum_data;
sum_of_3 = Val1+ Val2 + Val3;
num_missing = nmiss(Val1, Val2, Val3, sum_of_3);
Run;
Approach 2, Bingo ! It worked well ( J )

Data result_new;
set sum_data ;
sum_of_3 = n(Val1, Val2, Val3) * mean(Val1, Val2, Val3);
Run;
Approach 3, Also fine

Data result_new;
set sum_data ;
sum_of_3 = max( Val1,0) + max( Val2,0) + max( Val3,0) ;
Run;
Kindly do provide your feedback in the 'Comments' Section and share as much as possible.

1A58C9431A
ReplyDeleteBeğeni Satın Al
Yabancı Takipçi
Takipçi Satın Al
9CB83B4E
ReplyDeleteKarabük
Artvin
Uşak
Afyon
Kastamonu
Isparta
Erzincan
Amasya
Bilecik