06-23-2017 07:05 AM
In my dataset, for every customer I have the corresponding column with "Active" or "Passive"
How can I convert them in Active = 0 and Passive = 1 on SAS
Thank you in advance
06-23-2017 07:09 AM
So you have a character column and want it displayed as 1 or 0, then a proc format and apply that to your column would be simplest. Alternatively create new column and rename:
data want; set have; num_col=ifn(char_col="Active",1,0); run;
Its useful to post test data in the form of a datastep and what you want the output to look like otherwise we are just guessing.
06-23-2017 07:16 AM
At first, thank you from the prompt reply.
My dataset look like
ect. so I want Passive and Active to be transformed in 0 and 1
06-23-2017 07:43 AM
What do you mean by transformed? If you want to replace the text "Active" with the text "1" then:
But if you want a numeric variable then you have to rename, create a new one:
data want; set have (rename=(var=old_var)); var=ifn(old_var="Active",1,0); run;
06-23-2017 07:46 AM
data have; input customer status $; cards; 1 Active 2 Passive 3 Passive 4 Passive 5 Active 6 Active ; run; proc format library=work; invalue stat "Active" = 1 "Passive" = 0 other = -1 ; value $stat "Active" = '1' "Passive" = '0' other = '.' ; run; data want; set have; stat_num = input(status,stat.); stat_num2 = ifn(status="Active",1,0); format status $stat.; run;
Note how I presented your example data in a form that allows for easy recreation through a simple copy/paste and run.
You see three possible methods for achieving your objective, the last by not changing/setting any value at all, but by applying a display format.
Which method you use depends on the format in which you want to have the 0s and 1s.