Hello,
I have a data set with the variable Order_Type and it has numeric values of 1 2 and 3.
I need to take those numeric values and have them changed into different words.
So Order_Type 1 should be labeled as ‘In-Store’
Order_Type 2 should be labeled as ‘Catalogue’
Order_Type 3 should be labeled as ‘Web’
I keep getting errors when trying this:
data orders;
set BUS_4024.dly_orders;
if Order_Type = 1 then Order_Type = "In-store";
run;
Warnings say "Invalid numeric data, 'In-store'" for every line.
Im not that great with SAS but have been trying my best. Really appreciate any help, thanks!
Look into how to use formats.
proc format ;
value Order_Type 1=‘In-Store’ 2=‘Catalogue’ 3=‘Web’;
run;
Then you can have it display the descriptive text without changing the data.
proc freq data=have ;
tables order_type;
format order_type order_type.;
run;
General hint: SAS data sets have exactly two data types: numeric and character. The type, once set, cannot change. Attempting to assign a character value to numeric will generally fail unless your character value happens to look numeric: '123.45' for instance. At which point SAS will attempt to do what you want but will generate a note in the log about conversion of character to numeric (or vice versa). But if the value cannot by any stretch of the imagination be numeric such as "In-store" then it fails and you get the result you encountered.
One nice thing about SAS though is that you can use a custom format to display desired text based on a numeric value or range of values.
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 the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.