Help using Base SAS procedures

Change a numeric variable to input a character variable.

Reply
Occasional Contributor
Posts: 10

Change a numeric variable to input a character variable.

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!

Occasional Contributor
Posts: 10

Re: Change a numeric variable to input a character variable.

nevermind, i read the question wrong! Apparently I need to create a new variable Order_Type_Labels and have that variable list the words according to the number.
Super User
Super User
Posts: 6,144

Re: Change a numeric variable to input a character variable.

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;
Grand Advisor
Posts: 10,052

Re: Change a numeric variable to input a character variable.

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.

Ask a Question
Discussion stats
  • 3 replies
  • 57 views
  • 0 likes
  • 3 in conversation