04-18-2017 02:55 PM
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:
if Order_Type = 1 then Order_Type = "In-store";
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!
04-18-2017 03:01 PM
04-18-2017 03:54 PM
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;
04-18-2017 03:57 PM
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.