Order ODS Output by Variable Not in Graph

107 Views Asked by At

I am using ODS to output an rtf file with graphs for each warehouse, using the warehouse ID as the by value. I need to organize the graphs in ascending order of rejected products per 100 produced. I was reordering the graphs manually in Word, but now I am being asked to produce this for the top 20 warehouses instead of the top 5 and would prefer not to do this manually. I've created a variable (norder) to indicate the ranking of each warehouse, but if I sort by this or try to use it as a by value, it messes up the graphs. I have also tried the NOTSORTED option, but this did not work. Is there an easy way to do this? Below is my code:

    proc transpose data=WIDE_war
    out=Long_war(rename=(Col1=Value))
    name=source;
    by norder ID name county zipcode date;
    var defect1 defect2;
run;
    
proc sort data=long_war; by ID name zipcode county; run;

OPTIONS orientation=landscape nodate;
ods rtf file="C:\Users\....Top_10_Warehouse.rtf" STYLE=Styles.rtf bodytitle STARTPAGE=NO;;
ods listing close;
ods noproctitle  ;
ODS ESCAPECHAR='^';
title; footnote;
title;

ods graphics on / height=7in width=9in; 
ods graphics/noborder;

/*Table*/
/*List  name, ID, number of products produced, number of defects, the rate of defects per 100 units produced */
/*sort by descending order of the last number */

ods rtf text= "^{style[fontweight=bold just=c fontsize=14pt]Warehouses with the greatest number of defects per 100 units produced}"; 

proc sort data=req4; by descending rejrat2; run;
proc print data=req4 noobs label;
var ID name ZIPcode County;
var mean_prod newdefects rejrat2 /style(data)={ width=1in};
run;

* time trend plots;
ods rtf startpage=NOW;

ods rtf text= "^{style[fontweight=bold just=c fontsize=14pt] Trend plot of the warehouses listed in the above table since June 01, 2020}";   

proc sgplot data=long_war;
by ID name county ;
    title1 "ID= #byval(ID) ";
    title2 "Name: #byval(name) ";
    title3 "County: #byval(county) ";

vbar date/ response=Value group=source groupdisplay=stack grouporder=data NOOUTLINE;

xaxis type=linear thresholdmin=0 label="Date" 
    values=('01jun20'd to '13dec20'd by 7)
    labelattrs=(size=12pt weight=bold)
    valueattrs=(size=13pt);
yaxis min=0 label="Count" INTEGER grid 
    labelattrs=(size=12pt weight=bold)
    values=(0 to 35 by 5)
    valueattrs=(size=13pt) fitpolicy=thin offsetmin=0 ;
label Source = "Defects by type"
    Value = "Count";
options NOBYLINE;
run;

ods rtf close;
ods listing ;
0

There are 0 best solutions below