Fluorite | Level 6

## Help creating a new column based on observations in other columns

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

4 REPLIES 4
Fluorite | Level 6

## Re: Help creating a new column based on observations in other columns

Barite | Level 11

## Re: Help creating a new column based on observations in other columns

``````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;``````
Barite | Level 11

## Re: Help creating a new column based on observations in other columns

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;``````
Super User

## Re: Help creating a new column based on observations in other columns

``````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;``````
Discussion stats
• 4 replies
• 963 views
• 1 like
• 3 in conversation