BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Tpham
Quartz | Level 8

So this is my dataset from using the ODS output with proc ttest:

 

data.png

This is my code so far for proc report

 

options orientation=portrait;

ods rtf file="H:\temp.rtf" startpage=no nokeepn style=&mvSTYLE %wordstyle ;

proc report data=table3way headskip nowindows split='~'
	style(report)={font_size=9pt just=left cellpadding=2pt}
	style(header)={just=center font_weight=bold font_size=9pt background=CXE0E0E0}
	style(column)={cellheight=13pt font_size=9pt asis=on protectspecialchars=on}
	style(lines)={font_size=8pt asis=on};
		column dmtype Durationbi  Num cMean cSTD LowerCL UpperCL Probt;
		define dmtype/group style(column)=[vjust=middle just=left];
		define Durationbi /display;
		define num/display;
		define cMean/display format=9.2;
		define cSTD/display format=9.2;
		define LowerCL/display format=9.2;
		define UpperCL/display format=9.2;
		define Probt/group style(column)=[vjust=middle just=left];
	

	run;


footnote;title2;
ods rtf close;

 

And this is the RTF table I have based on the proc report above

table.png

 

So I want the Type of Diabetes cell and p-value cell merged and vertically centered, so there is no blank cell under it, basically to look like this:

 

want.png

How do I do this? I did add the Vjust=middle option for the two variables... But I guess I have to add in another line of code somewhere to merge the cells? Can someone please help me?

 

I did try looking at the solution outlined here, but I don't have missing data (Someone suggested doing "If not missing(pvalue) then _pvalue=pvalue; else pvalue=_pvalue; " I did try it with the retain function, but it didn't do anything since I didn't have missing data., so it pretty much copying the variable

 

Thanks!!

 

 

Edit: I also tried adding the SPANROW option on the Proc report statment and order=data option on the define statement as outlined here. And it didn't work either. I am on SAS 9.4 and the option wasn't blue so unsure if it was removed between 9.2 to 9.4.

1 ACCEPTED SOLUTION

Accepted Solutions
Cynthia_sas
Diamond | Level 26

Hi:

  When I run a slightly modified version of your code in SAS 9.4 M3, I do see the results you want with SPANROWS. Since you really are not grouping, I changed the usages to ORDER and DISPLAY. 

 

  Here's the output:

spanrows_test.png

 

And the code that produced the output (with a DATA step to make some fake data) is below.

 

cynthia

 

Here's the code: 

data table3way;
  length dmtype durationbi $15;
  infile datalines dlm=',' dsd;
  input dmtype $ ordvar Durationbi $ Num cMean cSTD LowerCL UpperCL Probt;
return;
datalines;
"Type 1",1,"<=10 years",17,76.76,17.85,67.59,85.94,0.7243
"Type 1",2,">10 year",44,75.30,13.06,71.32,79.27,0.7243
"Type 2",1,"<=10 years",47,67.23,22.22,44.44,88.88,0.5584
"Type 2",2,">10 year",35,69.43,33.33,55.55,99.99,0.5584
;
run;

proc sort data=table3way;
  by  dmtype ordvar durationbi;
run;

options orientation=portrait;
  
ods html(id=ht) file="c:\temp\spantest_order_display.html";
ods rtf file="c:\temp\spantest_order_display.rtf"   ;
	
title "Using &sysvlong4 and different usage for the items, SPANROWS does work for PROBT";
proc report data=table3way  nowindows split='~' spanrows
	style(report)={font_size=9pt }
	style(header)={just=center font_weight=bold font_size=9pt background=CXE0E0E0}
	style(column)={font_size=9pt protectspecialchars=on};
		column dmtype Durationbi  Num cMean cSTD LowerCL UpperCL probt;
		define dmtype/order style(column)=[vjust=m just=l];
		define Durationbi /display;
		define num/display;
		define cMean/display  format=9.2;
		define cSTD/display format=9.2;
		define LowerCL/display format=9.2;
		define UpperCL/display format=9.2;
		define probt / order style(column)={vjust=m just=l};
	run;


footnote;title;
ods rtf close;
ods html(id=ht) close;

View solution in original post

1 REPLY 1
Cynthia_sas
Diamond | Level 26

Hi:

  When I run a slightly modified version of your code in SAS 9.4 M3, I do see the results you want with SPANROWS. Since you really are not grouping, I changed the usages to ORDER and DISPLAY. 

 

  Here's the output:

spanrows_test.png

 

And the code that produced the output (with a DATA step to make some fake data) is below.

 

cynthia

 

Here's the code: 

data table3way;
  length dmtype durationbi $15;
  infile datalines dlm=',' dsd;
  input dmtype $ ordvar Durationbi $ Num cMean cSTD LowerCL UpperCL Probt;
return;
datalines;
"Type 1",1,"<=10 years",17,76.76,17.85,67.59,85.94,0.7243
"Type 1",2,">10 year",44,75.30,13.06,71.32,79.27,0.7243
"Type 2",1,"<=10 years",47,67.23,22.22,44.44,88.88,0.5584
"Type 2",2,">10 year",35,69.43,33.33,55.55,99.99,0.5584
;
run;

proc sort data=table3way;
  by  dmtype ordvar durationbi;
run;

options orientation=portrait;
  
ods html(id=ht) file="c:\temp\spantest_order_display.html";
ods rtf file="c:\temp\spantest_order_display.rtf"   ;
	
title "Using &sysvlong4 and different usage for the items, SPANROWS does work for PROBT";
proc report data=table3way  nowindows split='~' spanrows
	style(report)={font_size=9pt }
	style(header)={just=center font_weight=bold font_size=9pt background=CXE0E0E0}
	style(column)={font_size=9pt protectspecialchars=on};
		column dmtype Durationbi  Num cMean cSTD LowerCL UpperCL probt;
		define dmtype/order style(column)=[vjust=m just=l];
		define Durationbi /display;
		define num/display;
		define cMean/display  format=9.2;
		define cSTD/display format=9.2;
		define LowerCL/display format=9.2;
		define UpperCL/display format=9.2;
		define probt / order style(column)={vjust=m just=l};
	run;


footnote;title;
ods rtf close;
ods html(id=ht) close;

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 14058 views
  • 2 likes
  • 2 in conversation