SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
Phil_NZ
Barite | Level 11

Hi all, 

 

I want to do a summary statistic, I want to have a dollar format but when I code, it does not work properly. My code is:

 

proc means data= merge_treat_con n nmiss mean median std min max ;
var TOT_ASS;
format tot_ass dollar10.2;
run;

The result is

Phil_NZ_0-1618548668284.png

What I want is the below display:

N: 315,644

Mean:$1,644,563.48

Median:$151,294.00

Minimum:$0

Maximum: $781,818,000

 

 

 

While I try the code below, it announces errors

proc means data= merge_treat_con n nmiss mean median std min max;
	var TOT_ASS;
	format tot_ass dollar10.2 N comma7. Mean median dollar10.2
		minimum maximum dollar11.2;
run;

The log is

34         proc means data= merge_treat_con n nmiss mean median std min max ;
35         var TOT_ASS;
36         format tot_ass dollar10.2 N comma7. Mean median dollar10.2
WARNING: Variable N not found in data set WORK.MERGE_TREAT_CON.
37         minimum maximum dollar11.2;
WARNING: Variable MEAN not found in data set WORK.MERGE_TREAT_CON.
WARNING: Variable MEDIAN not found in data set WORK.MERGE_TREAT_CON.
WARNING: Variable MINIMUM not found in data set WORK.MERGE_TREAT_CON.
WARNING: Variable MAXIMUM not found in data set WORK.MERGE_TREAT_CON.
38         run;

Can you please help me to sort it out?

Thank you!

Thank you for your help, have a fabulous and productive day! I am a novice today, but someday when I accumulate enough knowledge, I can help others in my capacity.
3 REPLIES 3
andreas_lds
Jade | Level 19

The format-statement has no effect on the variables created by proc means.

Shmuel
Garnet | Level 18

Run next code and add any reporting step or procedure:

proc means data= sashelp.class noprint
            n nmiss mean median std min max ;
var height;
output out=temp (keep=_STAT_ height);
run;

proc transpose data=temp out=tmp1;
var height;
ID  _stat_;
run;
Astounding
PROC Star

The reason the FORMAT statement has no effect:  PROC MEANS is not printing TOT_ASS.  Instead, it is printing values that were calculated from TOT_ASS.

 

Luckily, several procedures are capable of printing summary statistics.  For example, PROC TABULATE can do that, and it is much more capable when it comes to formatting.  For example, here is some untested code that you can play with:

 

proc tabulate data=have noseps;
var tot_ass;
tables n='N:' * F=comma7.
       mean='Mean:' * f=dollar15.2
       median='Median:' * f = dollar15.2
       min='Minimum:' * f=dollar15.2
       max='Maximum:' * f=dollar15.2
       ,
       tot_ass;
run;

You may need to play around with the table (such as adjusting the formats, or removing the NOSEPS option) to improve its appearance.

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1291 views
  • 3 likes
  • 4 in conversation