What is wrong with this code?
PROC FORMAT;
VALUE IncomeB
1 = 'Do Not Know'
2 = 'Less than $25,000'
3 = '$25,000 - $49,999'
4 = '$50,000 - $74,999'
5 = '$75,000 - $99,999'
6 = '$100,000 - $124,999'
7 = '$125,000 - $149,999'
8 = '$150,000 - $174,999'
9 = '$175,000 - $199,999'
10 = '$200,000 - $224,999'
11 = '$225,000 - $249,999'
12 = '$250,000 - $274,999'
13 = '$275,000 - $299,999'
14 = '$300,000 - $324,999'
15 = '$325,000 - $349,999'
16 = '$350,000 - $374,999'
17 = '$375,000 - $399,999'
18 = '$400,000 or More';
RUN;
DATA All_Data_Total;
SET All_Data_Total;
FORMAT CHILD_INCOME_CD IncomeB.;
LOG:
283 PROC FORMAT;
284 VALUE IncomeB
285 1 = 'Do Not Know'
286 2 = 'Less than $25,000'
287 3 = '$25,000 - $49,999'
288 4 = '$50,000 - $74,999'
289 5 = '$75,000 - $99,999'
290 6 = '$100,000 - $124,999'
291 7 = '$125,000 - $149,999'
292 8 = '$150,000 - $174,999'
293 9 = '$175,000 - $199,999'
294 10 = '$200,000 - $224,999'
295 11 = '$225,000 - $249,999'
296 12 = '$250,000 - $274,999'
297 13 = '$275,000 - $299,999'
298 14 = '$300,000 - $324,999'
299 15 = '$325,000 - $349,999'
300 16 = '$350,000 - $374,999'
301 17 = '$375,000 - $399,999'
302 18 = '$400,000 or More';
NOTE: Format INCOMEB is already on the library WORK.FORMATS.
NOTE: Format INCOMEB has been output.
303 RUN;
NOTE: PROCEDURE FORMAT used (Total process time):
real time 0.04 seconds
cpu time 0.00 seconds
304 DATA ADKINS.All_Data_Total;
305 SET ADKINS.All_Data_Total;
306 FORMAT CHILD_INCOME_CD IncomeB.; /* No '$' in format reference */
--------
48
ERROR 48-59: The format $INCOMEB was not found or could not be loaded.
307 RUN;
NOTE: The SAS System stopped processing this step because of errors.
This ERROR message means that the variable, CHILD_INCOME_CD, is character. You can confirm with
proc contents data=adkins.all_data_total;
run;
You either need to create a character format or convert the variable to numeric using the INPUT function.
This ERROR message means that the variable, CHILD_INCOME_CD, is character. You can confirm with
proc contents data=adkins.all_data_total;
run;
You either need to create a character format or convert the variable to numeric using the INPUT function.
Thanks!
That is SAS's idea of being helpful. Since you tried to use a NUMERIC format with a CHARACTER variable it automatically assumed you forgot to include the $ in the FORMAT statement. But then it could not find a similarly named CHARACTER format. Hence the ERROR message.
Either make a character format, which should work fine for your simple 1 to 1 format.
VALUE $IncomeB
'1' = 'Do Not Know'
'2' = 'Less than $25,000'
'3' = '$25,000 - $49,999'
...
Or create a numeric variable from your character variable and attach the format to that variable.
DATA All_Data_Total;
SET All_Data_Total;
CHILD_INCOME_NUM = input(CHILD_INCOME_CD,32.);
FORMAT CHILD_INCOME_NUM IncomeB.;
RUN;
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.
Ready to level-up your skills? Choose your own adventure.