how to calculate the mode, frequency of mode and no:of distinct categories of all character variables in a dataset.
Prefer proc univariate.
Supersonic,
You cannot use PROC UNVIARIATE to calculate statistics on categorical variables.
However, PROC FREQ or PROC SQL can give you this information:
proc freq data = sashelp.class;
table sex;
ods output OneWayFreqs = my_count;
run;
*in this case the 'mode' will be sex= M, since it has the highest number of occurrences?
proc sql;
select sex from (select sex, count(1) as count_sex from sashelp.class group
by sex)
having count_sex = max(count_sex);
quit;
....oh,well.
the above eg will give only thetotal frequency.
i need to calculate the mode, and its frequency and no:of distinct categories.
suppose i have a list of variables in a macro list &list
so i need to claculate the mode for all variables in that list.
ok, it's a bit hard for me to understand the meaning of "mode" for categorical variables. So, what about this:
DATA TEMP;
SET SASHELP.CLASS;
IF NAME = "Janet" THEN NAME = "Jane";
IF NAME = "James" THEN NAME = "Jane";
IF . <AGE < 12 THEN AGE_GRP = "< 12 yrs ";
ELSE IF 12 <= AGE <= 13 THEN AGE_GRP = "12-13 yrs";
ELSE AGE_GRP = "> 13 yrs";
RUN;
PROC FREQ DATA = TEMP;
TABLES SEX AGE_GRP;
ODS OUTPUT ONEWAYFREQS = MY_F(KEEP = F_: FREQUENCY);
RUN;
PROC UNIVARIATE DATA = MY_F;
VAR FREQUENCY;
WHERE F_AGE_GRP NE " ";
RUN;
PROC UNIVARIATE DATA = MY_F;
VAR FREQUENCY;
WHERE F_SEX NE " ";
RUN;
In the first step, I modify the data SASHELP.CLASS to create another categorical variable, age_grp.
Then you run a frequency for the categorical variables...output a data set that will give you no:of distinct categories. Then run a univariate on it...and you get the mode (if it exists)...
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.