Hi Cynthia (and Everyone), Thanks for the quick replies. Sorry, I can't share the actual data, but will create dummy data that will work with my code below as well as a mockup of desired appearance / output. I understand that the nesting the dummy column under the across variable means the formatting is already set in stone and can not be altered, that was just the result of tinkering and got me closest to what I wanted at this stage, although obviously falls short. What I want (unformatted) looks like this: I've highlighted the column gaps I want. The reason I want them this way, rather than bearing with the dummy column solution or adding manually them after the fact is because given the guidelines my organisation has for presentation of tables within reports, I need the gaps. Having these gaps, assists with custom underlining that I do want i.e. having gaps between the states but not the stat headings like so: Having SAS output my tables as above, already formatted, also avoids a great deal of manual tinkering with the spacing and buffer as suggested which could lead to human error, especially since I have about 50 odd tables to produce in this (and similar) formats/styles. Unfortunately my organisation, while wanting them a certain way, does not provide resources to automate this via code. To assist, I've created and attached a 50-observation mockup raw dataset (MockUp_Pre - sorry it's .csv) that works with my listed code. The general method of producing my reports in the original post, includes taking a raw data set (like MockUp_Pre) in which these variables are included (as well as several other variables not used), running a proc tabulate on them using code like this (that works with MockUp_Pre): proc tabulate data=MockUp_Pre out=MockUp;
class patient_type state / mlf preloadfmt order=data;
var Outcome;
table (patient_type = 'Patient status' all='Total'),
(state = '')*(Outcome=''*F=comma. colpctn*f=5.1); /*columns*/
format patient_type patient_type_fmt. state state_fmt.;
keylabel sum="No." colpctn="%";
run;
/*Additional quirk we do to add 'Total' label to summary rows output in proc tabulate for patient_type*/
DATA MockUp;
SET MockUp;
IF patient_type = " " THEN patient_type = "Total"; /*Labelling will allow Reports below to include 'Total'*/
RUN; The proc tabulate, then outputs the (modified) MockUp output file (attached as a .csv). I'd then use the original PROC Report code listed in my original post to output the original report attachment. However, now given that what I want has changed (to the embedded excel mockup(s) above), my existing code obviously isn't suitable. Hopefully this additional information can assist. You all have greater expertise than I. I'm happy to put in the work to create a custom Report Writing Interface (as suggested by @ballardw) as it will help me in the long term provided that what I want is actually possible at all, and not impossible with PROC REPORT and the current dataset layout I have. Cheers, Matt
... View more