sasgroupingproc-report

proc report: proportion of group sum


I have the following proc report

proc report data=sashelp.class;
  col
    sex
    age
    weight
  ;
  define sex / group;
  define age / group;
  define weight / analysis sum;
run;

sashelp class

However I do not want to show the sum of weight. Instead I would like to have the proportion of the grouped sum. So first row should be 6.23%. How can I achieve this?


Solution

  • Now I have found a workaround:

    proc sql noprint;
    CREATE TABLE class AS
    SELECT a.*
        ,b.sumweight
    FROM sashelp.class a
    LEFT JOIN (SELECT sex, sum(weight) as sumweight
                FROM sashelp.class
                GROUP BY sex
    ) b
    ON a.sex=b.sex
    ;
    quit;
    
    proc report data=class;
    col
        sex
        age
        weight
        sumweight
        perc
    ;
    define sex / group;
    define age / group;
    define weight / analysis sum;
    define sumweight / analysis mean noprint;
    define perc / computed format=percent6.2;
    
    compute perc;
        perc = weight.sum/sumweight.mean;
    endcomp;
    run;
    

    But maybe there is a solution without additional proc sql step...