In short: I am using proc report, and I want to make a report that has a line break to before the first row associated with a group, but only for certain variables. I am trying to format a table to look like the Dream Table image shown below. I am making a demographics table similar to what's demonstrated in the invaluable paper Tips and Tricks for Making the Reports Your Clients Need to See. The difference between what that paper does and what I want to do is that I want to treat the continuous variables differently than the categorical variables. I want the categorical variables to be exactly the same as that paper shows, with the variable name displayed in a line above the categories/results. However, in a departure from the paper, I want one line per continuous variable (no break with the variable name above). This means that I need a line break to be before the first row associated with a group (in this case the variable), but only for certain variables. Dream Table I can conditionally insert a line break for the categorical variables, but I can only insert it above every line in the group, and I want it once before the group begins. Example of what I'm currently getting is shown below. Reality Table I'm including my fake data set as a CSV file because it's extremely tortured. My code is below. Please ignore the style differences in the output, I used a custom style to make the above table and it seemed too long/irrelevant to include in this post. options missing = " ";
ODS RTF style = journal FILE= "&outpathway.\NewLayout &SYSDATE..DOC";
proc report nowindows data=NewTest split="~"
style=[frame = hsides rules=groups]
style(header lines)=[font_face="calibri"]
style(column)=[font_face="calibri" just=center]
;
column Variable_Order Variable_Name Level_Order type ("Variable" New_Category) Grouper,Result ("P-Value" pvalue) ;
define Variable_Order / group noprint order=internal ;
define Variable_Name / group noprint order=internal ;
define Level_Order / group noprint order=internal ;
define type / group noprint;
define New_Category / group ' ' style=[just=left protectspecialchars=off];
define Grouper / across "Group \brdrb\brdrs" format = $50.
style=[protectspecialchars=off]
order = internal ;
define Result / group ' ' format=$50. ;
define pvalue / max " " format=pvalue6.3 ;
COMPUTE pvalue;
IF . < _c8_ <0.05 THEN
CALL DEFINE("_c8_", "STYLE", "STYLE=[FONT_WEIGHT=BOLD]");
ENDCOMP;
compute before type ;
if type = "C" then do;
num = 50;
text = Variable_Name;
end;
else do;
num = 0;
text = "";
end;
line @1 text $varying. num ;
endcomp;
run;
ODS RTF CLOSE; Many thanks in advance! PS I'm using SAS 9.4 (TS1M2).
... View more