<?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 Proc Report with across and group, order of  group varaible in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584449#M166468</link>
    <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;In the following example I am using&amp;nbsp; proc report .&lt;/P&gt;
&lt;P&gt;The problem&amp;nbsp; is in&amp;nbsp; the output table ,order of&amp;nbsp; categories&amp;nbsp; of&amp;nbsp; "Cat_Obligo"&amp;nbsp; &amp;nbsp;field is not same as in proc format.&lt;/P&gt;
&lt;P&gt;The order in output is :&lt;/P&gt;
&lt;P&gt;Lower than 30K&lt;/P&gt;
&lt;P&gt;[100,200)&lt;/P&gt;
&lt;P&gt;[200,500)&lt;/P&gt;
&lt;P&gt;[30,100)&lt;/P&gt;
&lt;P&gt;[500+&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I want that the order will be same as in proc format:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Lower than 30K'&lt;BR /&gt;&amp;nbsp;'[30,100)'&lt;BR /&gt;&amp;nbsp;'[100,200)'&lt;BR /&gt;&amp;nbsp;'[200,500)'&lt;BR /&gt;&amp;nbsp;'[500+'&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is wrong?&lt;/P&gt;
&lt;P&gt;Why did it happen?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data RawData;
input ID  mon Obligo allowance;
cards;
/*enter Raw data */
Run;


proc format;
value ffmt    
  0 -&amp;lt; 30 = 'Lower than 30K'
  30 -&amp;lt; 100 = '[30,100)'
  100 -&amp;lt; 200 = '[100,200)'
  200 -&amp;lt; 500 = '[200,500)'
  500 - high = '[500+'
;
run;

data RawData2;
set RawData;
Cat_Obligo=put(Obligo,ffmt.);
run;

proc sort data=RawData2;by mon Obligo;
Run;

title;
PROC REPORT DATA=RawData2 NOWINDOWS; 
COLUMN ('Group of Obligo' Cat_Obligo ) mon,(Obligo  allowance     Obligo=N_Customers);
DEFINE Cat_Obligo  / '' GROUP  order=internal ; 
DEFINE mon/ '' ACROSS NOZERO  ORDER=INTERNAL;
DEFINE Obligo / SUM 'Sum_OBLIGO' FORMAT=comma12.1 ; 
DEFINE allowance  / SUM 'Sum_Allowance' FORMAT=comma12.1 ; 
DEFINE N_Customers /N 'Customers'  FORMAT=comma18.; ; 
RUN;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 28 Aug 2019 07:37:43 GMT</pubDate>
    <dc:creator>Ronein</dc:creator>
    <dc:date>2019-08-28T07:37:43Z</dc:date>
    <item>
      <title>Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584449#M166468</link>
      <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;In the following example I am using&amp;nbsp; proc report .&lt;/P&gt;
&lt;P&gt;The problem&amp;nbsp; is in&amp;nbsp; the output table ,order of&amp;nbsp; categories&amp;nbsp; of&amp;nbsp; "Cat_Obligo"&amp;nbsp; &amp;nbsp;field is not same as in proc format.&lt;/P&gt;
&lt;P&gt;The order in output is :&lt;/P&gt;
&lt;P&gt;Lower than 30K&lt;/P&gt;
&lt;P&gt;[100,200)&lt;/P&gt;
&lt;P&gt;[200,500)&lt;/P&gt;
&lt;P&gt;[30,100)&lt;/P&gt;
&lt;P&gt;[500+&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I want that the order will be same as in proc format:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Lower than 30K'&lt;BR /&gt;&amp;nbsp;'[30,100)'&lt;BR /&gt;&amp;nbsp;'[100,200)'&lt;BR /&gt;&amp;nbsp;'[200,500)'&lt;BR /&gt;&amp;nbsp;'[500+'&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is wrong?&lt;/P&gt;
&lt;P&gt;Why did it happen?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data RawData;
input ID  mon Obligo allowance;
cards;
/*enter Raw data */
Run;


proc format;
value ffmt    
  0 -&amp;lt; 30 = 'Lower than 30K'
  30 -&amp;lt; 100 = '[30,100)'
  100 -&amp;lt; 200 = '[100,200)'
  200 -&amp;lt; 500 = '[200,500)'
  500 - high = '[500+'
;
run;

data RawData2;
set RawData;
Cat_Obligo=put(Obligo,ffmt.);
run;

proc sort data=RawData2;by mon Obligo;
Run;

title;
PROC REPORT DATA=RawData2 NOWINDOWS; 
COLUMN ('Group of Obligo' Cat_Obligo ) mon,(Obligo  allowance     Obligo=N_Customers);
DEFINE Cat_Obligo  / '' GROUP  order=internal ; 
DEFINE mon/ '' ACROSS NOZERO  ORDER=INTERNAL;
DEFINE Obligo / SUM 'Sum_OBLIGO' FORMAT=comma12.1 ; 
DEFINE allowance  / SUM 'Sum_Allowance' FORMAT=comma12.1 ; 
DEFINE N_Customers /N 'Customers'  FORMAT=comma18.; ; 
RUN;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 07:37:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584449#M166468</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2019-08-28T07:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584452#M166471</link>
      <description>&lt;P&gt;The problem is you are not using the order in Obligo variable, please try the below code, Here i created a copy of Obligo&amp;nbsp; as Obligo2 which i used in the begining of the all variables in column statement of proc report and order it. Please test and let us know.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data RawData2 ;&lt;BR /&gt;set RawData2 ;&lt;BR /&gt;Obligo2=Obligo  ;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;PROC REPORT DATA=RawData2 NOWINDOWS; 
COLUMN Obligo2 ('Group of Obligo' Cat_Obligo ) mon,(Obligo  allowance     Obligo=N_Customers);&lt;BR /&gt;DEFINE Obligo2   / noprint order order=data; 
DEFINE Cat_Obligo  / '' GROUP  order=internal ; 
DEFINE mon/ '' ACROSS NOZERO  ORDER=INTERNAL;
DEFINE Obligo / SUM 'Sum_OBLIGO' FORMAT=comma12.1 ; 
DEFINE allowance  / SUM 'Sum_Allowance' FORMAT=comma12.1 ; 
DEFINE N_Customers /N 'Customers'  FORMAT=comma18.; ; 
RUN;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 07:44:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584452#M166471</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-08-28T07:44:35Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584462#M166476</link>
      <description>&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;I don't see where you use&amp;nbsp;ffmt format.&lt;/P&gt;
&lt;P&gt;In the creation of Rawdata2 you missed the statement&lt;/P&gt;
&lt;P&gt;Cat_Obligo=put(Obligo,ffmt.);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 08:08:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584462#M166476</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2019-08-28T08:08:35Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584464#M166477</link>
      <description>&lt;P&gt;I am assuming that&amp;nbsp; the Cat_Obligo=put(Obligo,ffmt.); is alreadu created in Rawdata2, so in the same dataset I am creating a new variable&amp;nbsp; &lt;CODE class=" language-sas"&gt;Obligo2&lt;/CODE&gt; only for sorting. Then i am using that in proc report.&lt;/P&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data RawData2 ;
set RawData2 ;
Obligo2=Obligo  ;
run;

PROC REPORT DATA=RawData2 NOWINDOWS; 
COLUMN Obligo2 ('Group of Obligo' Cat_Obligo ) mon,(Obligo  allowance     Obligo=N_Customers);
DEFINE Obligo2   / noprint order order=data; 
DEFINE Cat_Obligo  / '' GROUP  order=internal ; 
DEFINE mon/ '' ACROSS NOZERO  ORDER=INTERNAL;
DEFINE Obligo / SUM 'Sum_OBLIGO' FORMAT=comma12.1 ; 
DEFINE allowance  / SUM 'Sum_Allowance' FORMAT=comma12.1 ; 
DEFINE N_Customers /N 'Customers'  FORMAT=comma18.; ; 
RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE class="  language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE class="  language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 08:13:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584464#M166477</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-08-28T08:13:07Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584465#M166478</link>
      <description>&lt;P&gt;Sorry but I didn't get the desired result. Still see same order.&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 08:16:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584465#M166478</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2019-08-28T08:16:31Z</dc:date>
    </item>
    <item>
      <title>Re: Proc Report with across and group, order of  group varaible</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584469#M166482</link>
      <description>&lt;P&gt;The solution that worked well is adding&amp;nbsp; a.&amp;nbsp; b. c.&amp;nbsp; d.&amp;nbsp; e. to proc format categories and then use order=formatted&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data RawData;
input ID  mon Obligo allowance;
cards;
/*enter Raw data */
Run;


proc format;
value ffmt    
  0 -&amp;lt; 30 = 'a.Lower than 30K'
  30 -&amp;lt; 100 = 'b.[30,100)'
  100 -&amp;lt; 200 = 'c.[100,200)'
  200 -&amp;lt; 500 = 'd.[200,500)'
  500 - high = 'e.[500+'
;
run;

data RawData2;
set RawData;
Obligo2=Obligo  ;
Cat_Obligo=put(Obligo,ffmt.);
run;

proc sort data=RawData2;by mon Obligo;
Run;

title;
PROC REPORT DATA=RawData2 NOWINDOWS; 
COLUMN ('Group of Obligo' Cat_Obligo ) mon,(Obligo  allowance     Obligo=N_Customers);
DEFINE Cat_Obligo  / '' GROUP  order=formatted ; 
DEFINE mon/ '' ACROSS NOZERO  ORDER=INTERNAL;
DEFINE Obligo / SUM 'Sum_OBLIGO' FORMAT=comma12.1 ; 
DEFINE allowance  / SUM 'Sum_Allowance' FORMAT=comma12.1 ; 
DEFINE N_Customers /N 'Customers'  FORMAT=comma18.; ; 
RUN;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 08:29:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Report-with-across-and-group-order-of-group-varaible/m-p/584469#M166482</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2019-08-28T08:29:50Z</dc:date>
    </item>
  </channel>
</rss>

