<?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: PROC TABULATE Order in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/PROC-TABULATE-Order/m-p/292108#M60578</link>
    <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have made good experience with using the CLASSDATA= option in Proc TABULATE. It allows you to specify an order as you need it for your class variable values. See the example below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*
 * sample data
 */
data carsSubset;
  set sashelp.cars;
  where make in (
    "Volkswagen", "Audi", "Volvo"
    , "Toyota", "Honda", "Subaru"
    , "Chrysler", "Ford", "Pontiac"
  );
  random = ceil( ranuni(1234) * 500 );
  keep origin type make model driveTrain invoice horsePower mpg_: random;
run;

/*
 * sort data in some random order
 */
proc sort data=carsSubset;
  by random;
run;

/*
 * create structure data, in the sequence as you would like to see them in the report
 * all CLASS variables must be present, but not all values
 */
data carsClassData;
  infile cards dsd dlm=",";
  input
    make : $13.
    driveTrain : $5.
  ;
cards;
Toyota,Front
Toyota,All
Toyota,Rear
;

title "1) carsClassData";
proc print data=carsClassData;
run;

title "2) Applied to tabulate";
proc tabulate
  data=work.carssubset
  classdata=carsClassData
  /* only use the class values present in the CLASSDATA= */
/*  exclusive*/
  order=data
  format=nlnum12.

;
  class make  /  order=data  ;
  class DriveTrain  / order=data ;
  var invoice;

  table
    make
    , driveTrain * invoice*(n min max mean)
  ;
run;
title;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Bruno&lt;/P&gt;</description>
    <pubDate>Wed, 17 Aug 2016 09:41:13 GMT</pubDate>
    <dc:creator>BrunoMueller</dc:creator>
    <dc:date>2016-08-17T09:41:13Z</dc:date>
    <item>
      <title>PROC TABULATE Order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-TABULATE-Order/m-p/292106#M60577</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have my PROC TABLULATE below, but within the output, I would like to format the order.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is how I would like it -&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="644"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD rowspan="3" width="146"&gt;Indexed LTV&lt;/TD&gt;
&lt;TD colspan="6" width="498"&gt;#&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="3" width="249"&gt;BTL&lt;/TD&gt;
&lt;TD colspan="3" width="249"&gt;Resi&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="83"&gt;IO (inc End &amp;amp; Lifetime)&lt;/TD&gt;
&lt;TD width="83"&gt;Repayment&lt;/TD&gt;
&lt;TD width="83"&gt;Part and Part&lt;/TD&gt;
&lt;TD width="83"&gt;IO (inc End &amp;amp; Lifetime)&lt;/TD&gt;
&lt;TD width="83"&gt;Repayment&lt;/TD&gt;
&lt;TD width="83"&gt;Part and Part&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But my output is, how do I make it so it matches the order above please within my PROC TABULATE -&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="644"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD rowspan="3" width="146"&gt;Indexed LTV&lt;/TD&gt;
&lt;TD colspan="6" width="498"&gt;#&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="3" width="249"&gt;RES&lt;/TD&gt;
&lt;TD colspan="3" width="249"&gt;BTL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="83"&gt;IO (inc End &amp;amp; Lifetime)&lt;/TD&gt;
&lt;TD width="83"&gt;Part and Part&lt;/TD&gt;
&lt;TD width="83"&gt;Repayment&lt;/TD&gt;
&lt;TD width="83"&gt;IO (inc End &amp;amp; Lifetime)&lt;/TD&gt;
&lt;TD width="83"&gt;Part and Part&lt;/TD&gt;
&lt;TD width="83"&gt;Repayment&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc tabulate data = mortbib.mortgagebible_201607 missing;&lt;BR /&gt; class curr_ind_ltv prod_class repay_type/preloadfmt order=data mlf;&lt;BR /&gt; var bal_sasout;&lt;BR /&gt; table (curr_ind_ltv="" all="Total"),&lt;BR /&gt; (n="#" sum="£"*f=comma19. ) *&lt;BR /&gt; (prod_class="") *&lt;BR /&gt; (repay_type="") * &lt;BR /&gt; (bal_sasout="") /box="Indexed LTV";&lt;BR /&gt; format curr_ind_ltv ltv. prod_class $pclass. repay_type $repay.;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Aug 2016 09:06:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-TABULATE-Order/m-p/292106#M60577</guid>
      <dc:creator>anonymous_user</dc:creator>
      <dc:date>2016-08-17T09:06:25Z</dc:date>
    </item>
    <item>
      <title>Re: PROC TABULATE Order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/PROC-TABULATE-Order/m-p/292108#M60578</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have made good experience with using the CLASSDATA= option in Proc TABULATE. It allows you to specify an order as you need it for your class variable values. See the example below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*
 * sample data
 */
data carsSubset;
  set sashelp.cars;
  where make in (
    "Volkswagen", "Audi", "Volvo"
    , "Toyota", "Honda", "Subaru"
    , "Chrysler", "Ford", "Pontiac"
  );
  random = ceil( ranuni(1234) * 500 );
  keep origin type make model driveTrain invoice horsePower mpg_: random;
run;

/*
 * sort data in some random order
 */
proc sort data=carsSubset;
  by random;
run;

/*
 * create structure data, in the sequence as you would like to see them in the report
 * all CLASS variables must be present, but not all values
 */
data carsClassData;
  infile cards dsd dlm=",";
  input
    make : $13.
    driveTrain : $5.
  ;
cards;
Toyota,Front
Toyota,All
Toyota,Rear
;

title "1) carsClassData";
proc print data=carsClassData;
run;

title "2) Applied to tabulate";
proc tabulate
  data=work.carssubset
  classdata=carsClassData
  /* only use the class values present in the CLASSDATA= */
/*  exclusive*/
  order=data
  format=nlnum12.

;
  class make  /  order=data  ;
  class DriveTrain  / order=data ;
  var invoice;

  table
    make
    , driveTrain * invoice*(n min max mean)
  ;
run;
title;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Bruno&lt;/P&gt;</description>
      <pubDate>Wed, 17 Aug 2016 09:41:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/PROC-TABULATE-Order/m-p/292108#M60578</guid>
      <dc:creator>BrunoMueller</dc:creator>
      <dc:date>2016-08-17T09:41:13Z</dc:date>
    </item>
  </channel>
</rss>

