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
SAS Super FREQ

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
SAS Super FREQ

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-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 1 reply
  • 12312 views
  • 1 like
  • 2 in conversation