It's Friday.
proc format;
value xfmt other='Num';
value $xfmt other='Chr';
run;
data class;
set sashelp.class;
format _all_ xfmt.;
run;
proc contents varnum;
run;
Variables in Creation Order
# Variable Type Len Format
1 Name Char 8 $XFMT.
2 Sex Char 1 $XFMT.
3 Age Num 8 XFMT.
4 Height Num 8 XFMT.
5 Weight Num 8 XFMT.
27 data class;
28 set sashelp.class;
29 format _all_ xfmt.;
30 run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set WORK.CLASS has 19 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
This is good to know. Thanks for sharing! It simplifies the assignment of two of my favorite user-defined formats:
proc format;
value miss
._-.z = 'missing'
other = 'non-missing';
value $miss
' ' = 'missing'
other = 'non-missing';
run;
Very interesting thing.
Maybe SAS is too smart . a.k.a AI technology .
Note this trick doesn't work in PROCs at least not SUMMARY/MEANS my favorite. I use a data step VIEW.
My application is passed a list of variables of mixed type. I want to associated a format to collapse all non-missing levels to one similar to @FreelanceReinh missing/not-missing example. I "can't" use _NUMERIC_ or _CHARACTER_ because I have other variable(s) that I don't want to associated with the format.
This also works but changes the order of the variables in the data set. Order in the is usually not a concern.
proc format;
value xfmt other='Num';
value $xfmt other='Chr';
run;
%let vlist=Status DeathCause AgeCHDdiag Sex;
data heart;
set sashelp.heart(keep=&vlist);
format _character_ $xfmt. _numeric_ xfmt.;
set sashelp.heart(drop=&vlist);
run;
proc contents varnum;
run;
# Variable Type Len Format Label
1 Status Char 5 $XFMT.
2 DeathCause Char 26 $XFMT. Cause of Death
3 AgeCHDdiag Num 8 XFMT. Age CHD Diagnosed
4 Sex Char 6 $XFMT.
5 AgeAtStart Num 8 Age at Start
6 Height Num 8
7 Weight Num 8
8 Diastolic Num 8
9 Systolic Num 8
10 MRW Num 8 Metropolitan Relative
11 Smoking Num 8
12 AgeAtDeath Num 8 Age at Death
13 Cholesterol Num 8
14 Chol_Status Char 10 Cholesterol Status
15 BP_Status Char 7 Blood Pressure Status
16 Weight_Status Char 11 Weight Status
17 Smoking_Status Char 17 Smoking Status
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.