Hello,
I am having trouble creating a new variable using conditions, I've tried data steps but to no avail.
My data set looks like this right now:
A B C D E 1 . 1 1 . . 1 . . . 1 . 1 . 1
I need to look like this
A B C D E R . . . . 1 . 1 . . . . . . . . . 1
So the idea that i've used is if the sum of a -- d is greater than 1 then set R equal to 1 else . and then drop the observations if 1 is present in a & b & c & d & e but its not doing it for me perhaps its due to missing values.
code i've used so far:
data campZ;
set campY;
select;
when (sum(Macroscopic -- Symbolic > 1)) Random = 1;
otherwise;
end;
run;
I've tried Proc SQL as well but I have been mainly focusing on the data step but any help will be great.
Thank you!
Will
data need (Drop= i numMissing);
set have;
array varx(*) A--E;
numMissing = cmiss(A,B,C,D);
if numMissing < 3 then DO;
R = 1;
Do i =1 to dim(varx);
varx(i)=.;
End;
End;
Else R=.;
run;
Another way
data need (Drop= i);
set have;
array varx(5) A--E;
if SUM(A,B,C,D) > 1 then DO;
R = 1;
Do i =1 to dim(varx);
varx(i)=.;
End;
End;
Else R=.;
run;
data have;
input A B C D E;
cards;
1 . 1 1 .
. 1 . . .
1 . 1 . 1
;
run;
data want;
set have;
if sum(of A--E) > 1 then do;
Random = 1;
call missing(of A--E);
end;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.