BookmarkSubscribeRSS Feed
tiensij
Calcite | Level 5

Hi all. I'm trying to create a variable (newvar) from six variables (var1, var2, var3, var4, var5, var6). Positive endorsement of any of the six will mean newvar=yes (even if it means positive endorsement of one and missing data for the other 5). 

 

Currently, my code is : if var1=1  OR var2=1 OR var3=1 OR var4=1 OR var5=1 OR var6=1 THEN newvar=1;

 

If there is not a positive endorsement for any item and failure to answer all 6 items, then they must be considered missing. Negative endorsement of all six items will result in newvar=0. I'm seeking help for this code. Any suggestions will be appreciated.

 

Var1

Var2

Var3

Var4

Var5

Var6

newvar

Yes

Missing

Missing

No

No

No

yes

Missing

No

No

No

No

No

Missing

No

No

No

No

No

No

No

No

No

No

No

No

Yes

yes

5 REPLIES 5
Reeza
Super User

Since you're code is using 1 you have formats applied?


What do the actual values look like in your data?

 

You can look up the WHICHC/WHICHN which will search a list of variables to see if a particular values occurs and returns the index of the variable it does.

 

I'm pretty sure that's all you need here 🙂

rogerjdeangelis
Barite | Level 11
New Variable from Multiple Variables


current code

if var1=1  OR var2=1 OR var3=1 OR var4=1 OR var5=1 OR var6=1 THEN newvar=1;


HAVE

Up to 40 obs WORK.HAVE total obs=10

Obs    VAR1    VAR2    VAR3    VAR4    VAR5    VAR6

  1      0       0       0       1       0       0
  2      0       0       1       0       0       0
  3      0       0       1       0       0       .
  4      1       0       0       1       0       0
  5      0       0       1       1       0       0
  6      1       .       0       0       0       .
  7      1       0       0       0       0       .
  8      0       0       0       0       1       0
  9      0       0       0       .       0       0
 10      0       .       1       0       1       1

WANT
Up to 40 obs WORK.WANT total obs=10

Obs    VAR1    VAR2    VAR3    VAR4    VAR5    VAR6    NEWVAR

  1      0       0       0       1       0       0        1
  2      0       0       1       0       0       0        1
  3      0       0       1       0       0       .        1
  4      1       0       0       1       0       0        1
  5      0       0       1       1       0       0        1
  6      1       .       0       0       0       .        1
  7      1       0       0       0       0       .        1
  8      0       0       0       0       1       0        1
  9      0       0       0       .       0       0        0
 10      0       .       1       0       1       1        1

WORKING CODE

     newvar = (sum(of var:)>0);

* FULL SOLUTION;

* make data;
data have;
 array sixpac var1-var6;
 do i=1 to 10;
     do over sixpac;
         sixpac=(uniform(5733)>.8);
         if (uniform(5731)>.95) then sixpac=.;
     end;
     output;
     drop i;
 end;
run;quit;

* SOLUTION;
data want;
 set have;
 newvar = (sum(of var:)>0);
run;quit;




tiensij
Calcite | Level 5

Yes, I do have formats applied. It's survey data, so values are -9 (missing), 1(yes), and 2(no). I was not aware of the WHICHC/WHICHN, but will look into it.

 

Thanks!

ballardw
Super User

Assumes 1=Yes, 0=No

 

if max(var1,var2,var3,var4,var5,var6)=1 then newvar=1;

else if n(var1,var2,var3,var4,var5,var6)=6 then newvar=0;

 

If one of the conditions is not true then newvar will be missing.

Ksharp
Super User
data have;
input (Var1
Var2
Var3
Var4
Var5
Var6
newvar) ($);
drop newvar;
cards;
Yes
Missing
Missing
No
No
No
yes
Missing
No
No
No
No
No
Missing
No
No
No
No
No
No
No
No
No
No
No
No
Yes
;
run;
data want;
 set have;
 array x{*} $ var:;
 new='No        ';
 if 'Yes' in x then new='Yes';
  else if 'Missing' in x then new='Missing';
run;

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 1897 views
  • 0 likes
  • 5 in conversation