<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to Shift Headers Upward in PROC TABULATE Output in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963408#M45888</link>
    <description>&lt;P&gt;That would be a little complicated.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc summary data=sashelp.heart nway;
class status sex bp_status smoking_status;
var weight;
output out=have sum=;
run;
data have2;
 set have(drop=_:);
 by  status sex bp_status smoking_status;
 if not first.status then call missing(status);
 if not first.sex then call missing(sex);
 if not first.bp_status then call missing(bp_status);
 if not first.smoking_status then call missing(smoking_status);
run;



ods rtf file="c:\temp\odsr_column_span.rtf" style=minimal;
title "Complex Column Spanning";
data _null_; 
  set have2 end=last; 
  if _N_ = 1 then do; 
      dcl odsout obj(); 
      obj.table_start(); 
      obj.head_start(); 
	  ** Header row 1;
	  obj.row_start(type:"Header");
	  obj.format_cell(text: "status", row_span:2,style_attr:"color=black  vjust=m "); 
      obj.format_cell(text: "sex", row_span:2, style_attr:"color=black  vjust=m"); 
      obj.format_cell(text: "bp_status", row_span:2, style_attr:"color=black vjust=m"); 
      obj.format_cell(text: "smoking_status", row_span:2, style_attr:"color=black  vjust=m"); 
      obj.format_cell(text: "Annual", row_span:1, style_attr:"color=black "); 
      obj.row_end(); 
	  ** Header row 2;
	  obj.row_start(type:"Header");
      obj.format_cell(text: "Exp",  row_span:1, style_attr:"color=black"); 
      obj.row_end();  
	  obj.head_end(); 
    end;
  ** row for every obs;
      obj.row_start(); 
      obj.format_cell(data: status, row_span:1); 
      obj.format_cell(data: sex, row_span:1); 
      obj.format_cell(data: bp_status, row_span:1);
      obj.format_cell(data: smoking_status, row_span:1); 
      obj.format_cell(data: weight, row_span:1); 
	  obj.row_end();
  if last then do; 
      obj.table_end(); 
  end; 
run; 
ods rtf close;
title; footnote;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1743770434083.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105895iB28687A6BF8BD7B1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1743770434083.png" alt="Ksharp_0-1743770434083.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 04 Apr 2025 12:40:43 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2025-04-04T12:40:43Z</dc:date>
    <item>
      <title>How to Shift Headers Upward in PROC TABULATE Output</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963393#M45885</link>
      <description>&lt;DIV&gt;I’m using PROC TABULATE in SAS to create a table with nested row headers (e.g., &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;sec_sr_no='Sr. No.'&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;SECTOR_NAME='Sector'&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;subsec_sr_no='Sr. No.'&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;SUB_SECTOR_NAME='Sub-Sector'&lt;/SPAN&gt;) and a summarized variable (&lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;Ext_tot_Outlay&lt;/SPAN&gt; with &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;SUM&lt;/SPAN&gt;). My current code is:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&lt;BR /&gt;PROC TABULATE DATA=dataset FORMAT=COMMA12.;
    CLASS sec_sr_no SECTOR_NAME subsec_sr_no SUB_SECTOR_NAME;
    VAR Ext_tot_Outlay;
    
    TABLE sec_sr_no='Sr. No.' * SECTOR_NAME='Sector' * subsec_sr_no='Sr. No.' * SUB_SECTOR_NAME='Sub-Sector', 
          Ext_tot_Outlay='Annual' * SUM='Exp';
RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV&gt;I’d like the headers (&lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;Sr. No.&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;Sector&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;Sr. No.&lt;/SPAN&gt;, &lt;SPAN class="text-sm px-1 rounded-sm !font-mono bg-sunset/10 text-rust dark:bg-dawn/10 dark:text-dawn"&gt;Sub-Sector&lt;/SPAN&gt;) to "shift up" in the output&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daily1_0-1743761122141.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105891i7B7A7A765F247297/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Daily1_0-1743761122141.png" alt="Daily1_0-1743761122141.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;i want&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daily1_1-1743761215885.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105892i8C785AA8AE9F95AF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Daily1_1-1743761215885.png" alt="Daily1_1-1743761215885.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;P class="break-words"&gt;Is there an option in PROC TABULATE to adjust the vertical placement or spacing of row headers? If not, what’s the best alternative (e.g., PROC REPORT) to achieve this customization?&lt;/P&gt;
&lt;P class="break-words"&gt;Thank you!&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 04 Apr 2025 10:10:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963393#M45885</guid>
      <dc:creator>Daily1</dc:creator>
      <dc:date>2025-04-04T10:10:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to Shift Headers Upward in PROC TABULATE Output</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963399#M45886</link>
      <description>&lt;P&gt;Nope. But you can use PROC REPORT to achieve this report.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PROC REPORT DATA=sashelp.heart nowd;
column status sex bp_status smoking_status ('Annual' weight);
define status/group 'Sr. No.' ;
define sex/group 'Sector';
define bp_status/group 'Sr. No.';
define smoking_status/group 'Sub-Sector';
define weight/analysis sum 'Exp' f=COMMA12.;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1743765250864.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105893iD90A795DCAA94CAB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1743765250864.png" alt="Ksharp_0-1743765250864.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2025 11:14:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963399#M45886</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-04-04T11:14:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to Shift Headers Upward in PROC TABULATE Output</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963405#M45887</link>
      <description>&lt;P&gt;Thanks For your Respose, But&amp;nbsp;i want the headers (Sr. No., Sector, Sr. No., Sub-Sector) to be moved up in the output&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daily1_0-1743768181619.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105894i5080405F55F4E81B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Daily1_0-1743768181619.png" alt="Daily1_0-1743768181619.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2025 12:06:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963405#M45887</guid>
      <dc:creator>Daily1</dc:creator>
      <dc:date>2025-04-04T12:06:49Z</dc:date>
    </item>
    <item>
      <title>Re: How to Shift Headers Upward in PROC TABULATE Output</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963408#M45888</link>
      <description>&lt;P&gt;That would be a little complicated.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc summary data=sashelp.heart nway;
class status sex bp_status smoking_status;
var weight;
output out=have sum=;
run;
data have2;
 set have(drop=_:);
 by  status sex bp_status smoking_status;
 if not first.status then call missing(status);
 if not first.sex then call missing(sex);
 if not first.bp_status then call missing(bp_status);
 if not first.smoking_status then call missing(smoking_status);
run;



ods rtf file="c:\temp\odsr_column_span.rtf" style=minimal;
title "Complex Column Spanning";
data _null_; 
  set have2 end=last; 
  if _N_ = 1 then do; 
      dcl odsout obj(); 
      obj.table_start(); 
      obj.head_start(); 
	  ** Header row 1;
	  obj.row_start(type:"Header");
	  obj.format_cell(text: "status", row_span:2,style_attr:"color=black  vjust=m "); 
      obj.format_cell(text: "sex", row_span:2, style_attr:"color=black  vjust=m"); 
      obj.format_cell(text: "bp_status", row_span:2, style_attr:"color=black vjust=m"); 
      obj.format_cell(text: "smoking_status", row_span:2, style_attr:"color=black  vjust=m"); 
      obj.format_cell(text: "Annual", row_span:1, style_attr:"color=black "); 
      obj.row_end(); 
	  ** Header row 2;
	  obj.row_start(type:"Header");
      obj.format_cell(text: "Exp",  row_span:1, style_attr:"color=black"); 
      obj.row_end();  
	  obj.head_end(); 
    end;
  ** row for every obs;
      obj.row_start(); 
      obj.format_cell(data: status, row_span:1); 
      obj.format_cell(data: sex, row_span:1); 
      obj.format_cell(data: bp_status, row_span:1);
      obj.format_cell(data: smoking_status, row_span:1); 
      obj.format_cell(data: weight, row_span:1); 
	  obj.row_end();
  if last then do; 
      obj.table_end(); 
  end; 
run; 
ods rtf close;
title; footnote;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ksharp_0-1743770434083.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105895iB28687A6BF8BD7B1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Ksharp_0-1743770434083.png" alt="Ksharp_0-1743770434083.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2025 12:40:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963408#M45888</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-04-04T12:40:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to Shift Headers Upward in PROC TABULATE Output</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963448#M45889</link>
      <description>&lt;P&gt;Hi:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Why do you need a cell division between the word "Annual" and "Exp"?&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Using the SASHELP.HEART data you could do this with PROC REPORT if you put Annual and Exp in the same header cell:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Cynthia_sas_0-1743779943967.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105921i12459572B3C4C11D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Cynthia_sas_0-1743779943967.png" alt="Cynthia_sas_0-1743779943967.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Cynthia&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2025 15:19:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-Shift-Headers-Upward-in-PROC-TABULATE-Output/m-p/963448#M45889</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2025-04-04T15:19:24Z</dc:date>
    </item>
  </channel>
</rss>

