BookmarkSubscribeRSS Feed
Aman4SAS
Obsidian | Level 7

data grocery;

   input Sector $ Manager $ Department $ Sales @@;

   datalines;

se 1 np1 50    se 1 p1 100   se 1 np2 120   se 1 p2 80

se 2 np1 40    se 2 p1 300   se 2 np2 220   se 2 p2 70

nw 3 np1 60    nw 3 p1 600   nw 3 np2 420   nw 3 p2 30

nw 4 np1 45    nw 4 p1 250   nw 4 np2 230   nw 4 p2 73

nw 9 np1 45    nw 9 p1 205   nw 9 np2 420   nw 9 p2 76

sw 5 np1 53    sw 5 p1 130   sw 5 np2 120   sw 5 p2 50

sw 6 np1 40    sw 6 p1 350   sw 6 np2 225   sw 6 p2 80

ne 7 np1 90    ne 7 p1 190   ne 7 np2 420   ne 7 p2 86

ne 8 np1 200   ne 8 p1 300   ne 8 np2 420   ne 8 p2 125

;

proc format library=proclib;

   value $sctrfmt 'se' = 'Southeast'

                  'ne' = 'Northeast'

                  'nw' = 'Northwest'

                  'sw' = 'Southwest';

   value $mgrfmt '1' = 'Smith'   '2' = 'Jones'

                 '3' = 'Reveiz'  '4' = 'Brown'

                 '5' = 'Taylor'  '6' = 'Adams'

                 '7' = 'Alomar'  '8' = 'Andrews'

                 '9' = 'Pelfrey';

   value $deptfmt 'np1' = 'Paper'

                  'np2' = 'Canned'

                  'p1'  = 'Meat/Dairy'

                  'p2'  = 'Produce';

run;

options nodate pageno=1 linesize=64 pagesize=60

        fmtsearch=(proclib);

proc report data=grocery nowd headline headskip;

   column sector manager sales;

   define sector / group

                   format=$sctrfmt.

                   'Sector';

   define manager / group

                    format=$mgrfmt.

                    'Manager';

   define sales / analysis sum

                  format=comma10.2

                  'Sales';

   break after sector / ol

                        summarize

                        suppress

                        skip;

   compute after;

      line 'Combined sales for the northern sectors were '

            sales.sum dollar9.2 '.';

   endcomp;

   compute sales;

      if _break_ ne ' ' then

      call define(_col_,"format","dollar11.2");

   endcomp;

   where sector contains 'n';

   title 'Sales Figures for Northern Sectors';

run;

Output

                Sales Figures for Northern Sectors             

                 Sector        Manager       Sales

                 -----------------------------------------------      

                 Northeast    Alomar         786.00

                                   Andrews      1,045.00

                                                     ----------

                                                      $1,831.00

                                              

                 Northwest    Brown        598.00

                                   Pelfrey       746.00

                                   Reveiz       1,110.00

                                                     ----------

                                                      $2,454.00

                                              

    Combined sales for the northern sectors were $4,285.00.

My desired output is....

Sales Figures for Northern Sectors             

                                  Manager       Sales

                                  --------------------------------      

                                   Alomar          $786.00

                                   Andrews       $1,045.00

                                   Northeast     $1,831.00

                                    Brown          $598.00

                                   Pelfrey          $746.00

                                   Reveiz          $1,110.00

                                  Northwest   $2,454.00

             -                     Total            $4,285.00  

   

                                              

  can i have output like this,

Please guide me .. thanks...........

1 REPLY 1
Cynthia_sas
SAS Super FREQ

Hi,

You seem fairly comfortable with COMPUTE blocks. So you would put the NOPRINT option on the DEFINE statement SECTOR. Then take SUPPRESS option off your BREAK statement for SECTOR.

Next, you would need to have a compute block for MANAGER, something like this (not on a system where I have SAS right now):

compute after manager;

manager = sector;

endcomp;

  I think you will need to make the Manager variable have a LENGTH statement in the DATA step code, thoough, or I belive that Northeast and Northwest might not fit.  To get the Grand Total, you will need an RBBREAK AFTER / SUMMARIZE statement added and then add

Manager='Total' to your compute blck for compute after.

   I have an example that uses SASHELP.SHOES, but I'm not on the computer with the example right now.. However, those ideas should get you pointed in the right direction.

cynthia

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 662 views
  • 0 likes
  • 2 in conversation