07-04-2013 12:22 PM
is there any way to create a user-defined column either with "Summary Tables" Report in SAS Enterprise Guide or with SAS PROC TABULATE procedure?
I didn't find the solution so far.
What I would like to get, is following:
I have two variables TOTAL and ERRORS, I am looking for an option in SAS EG to implement my column RATIO, that would show ratio values.
I tried the possibility to calculate this column in a data set, and then to implement it as a separate value, Works OK, apart from the TOTAL value for RATIO. (I do not want this value to be summarized. It should show the ratio between SUM(Errors) / SUM(Total))
Thanks in advance for your ideas!
07-04-2013 02:02 PM
Easy enough to do with PROC REPORT. Not sure how to get EG to do it.
input year total errors;
2010 1000 10
2011 3000 25
2012 2000 32
proc report nofs ;
column year total errors ratio ;
define year / order order=internal ;
define total / sum ;
define errors / sum ;
define ratio / computed format=percent8.2;
compute ratio ;
ratio = errors.sum / total.sum ;
rbreak after / ol summarize ;
year total errors ratio
2010 1000 10 1.00%
2011 3000 25 0.83%
2012 2000 32 1.60%
--------- --------- --------
6000 67 1.12%
07-04-2013 06:28 PM
Your method is the only way with REPORT. The challenge with the List Report Wizard in EG is that you cannot do a COMPUTE block. So while it's good for getting the basic report structure down, the code in the COMPUTE block has to be added. Which means you have to export the REPORT code and add the COMPUTE block. (which means you have to understand the compute block).
There is also a way to do this with TABULATE (using your data), but it requires using a special denominator definition -- so also needs code.
picture pct (round) low-high='009.99%';
proc tabulate data=have;
var total errors;
table year all,
total errors errors*pctsum<total>*f=pct.;
07-05-2013 05:52 AM
it is a very helpful solution as well. I ,personally, find the solution with PROC REPORT a bit strightforward.
Thank you all for proposed solutions!