<?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: Reorder variables and move a specific variable to end of dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760103#M240318</link>
    <description>Map your colours to numbers that will give you the hierarchy desired and use a format to have the colours displayed with the names.</description>
    <pubDate>Fri, 06 Aug 2021 22:27:08 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2021-08-06T22:27:08Z</dc:date>
    <item>
      <title>Reorder variables and move a specific variable to end of dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760101#M240316</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;See sample data below. I would like to reorder the variables so that "blue" is always at the end as "COLOR4". Looking at the first line with blue as "COLOR1", I would need the new "COLOR1" to be "black", then "red" as "COLOR2" , "green" as "COLOR3" , and then "blue" as color4.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Variables other than "blue" should stay in the same order but just get redefined as COLORS1,2,and 3. "Blue" should always be last as COLOR4.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there a code that can do this??&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sample dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR3&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR4&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is what I am trying to achieve:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR3&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;COLOR4&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;black&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;105tt&lt;/P&gt;</description>
      <pubDate>Fri, 06 Aug 2021 22:18:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760101#M240316</guid>
      <dc:creator>105tt</dc:creator>
      <dc:date>2021-08-06T22:18:11Z</dc:date>
    </item>
    <item>
      <title>Re: Reorder variables and move a specific variable to end of dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760103#M240318</link>
      <description>Map your colours to numbers that will give you the hierarchy desired and use a format to have the colours displayed with the names.</description>
      <pubDate>Fri, 06 Aug 2021 22:27:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760103#M240318</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-08-06T22:27:08Z</dc:date>
    </item>
    <item>
      <title>Re: Reorder variables and move a specific variable to end of dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760105#M240320</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/392587"&gt;@105tt&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See sample data below. I would like to reorder the variables so that "blue" is always at the end as "COLOR4". Looking at the first line with blue as "COLOR1", I would need the new "COLOR1" to be "black", then "red" as "COLOR2" , "green" as "COLOR3" , and then "blue" as color4.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Variables other than "blue" should stay in the same order but just get redefined as COLORS1,2,and 3. "Blue" should always be last as COLOR4.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a code that can do this??&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sample dataset:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR1&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR2&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR3&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR4&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is what I am trying to achieve:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR1&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR2&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR3&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;COLOR4&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;red&lt;/TD&gt;
&lt;TD&gt;green&lt;/TD&gt;
&lt;TD&gt;black&lt;/TD&gt;
&lt;TD&gt;blue&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance!&lt;/P&gt;
&lt;P&gt;105tt&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;What you request is a variation on very old code called a "Bubble sort". Which compares two values and then assigns an order.&lt;/P&gt;
&lt;P&gt;Example;&lt;/P&gt;
&lt;PRE&gt;data have;
   input COLOR1 $	COLOR2 $	COLOR3 $	COLOR4 $;
datalines;
blue	black	red	green
black	green	blue	red
red	black	blue	green
red	green	black	blue
;

data want;
   set have;
   array c (*) color1-color4;
   length temp $ 8.;
   do i=1 to (dim(c)-1);
      if c[i]='blue' then do;
         temp=c[i];
         c[i]=c[i+1];
         c[i+1]=temp;
      end;
   end;
   drop i temp;
run;&lt;/PRE&gt;
&lt;P&gt;Please note the data step to create example data. It helps us provide better code when you provide data as working data step because it clarifies any issues about whether variables are numeric or character and such.&lt;/P&gt;
&lt;P&gt;The Array holds the values of interest.&lt;/P&gt;
&lt;P&gt;The Do loops over the first 3 values of the array comparing them with the next (higher index number value). So compares Color1 to Color2. If the current value of the "first" value is blue then using a temp variable to hold the value it switches places between 1 and 2. Then compares Color2 to Color3 and switches if needed.&lt;/P&gt;
&lt;P&gt;Since you are only looking at a single specific value this is not the most efficient code but is possibly easier to modify if you need to do two specific values, like blue as last and green as next to last, as a later exercise.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some programming languages have a Swap function that doesn't require the temporary variable that I use above in SAS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When I say "old", I mean that I learned this in 1978.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 06 Aug 2021 22:38:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reorder-variables-and-move-a-specific-variable-to-end-of-dataset/m-p/760105#M240320</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-08-06T22:38:30Z</dc:date>
    </item>
  </channel>
</rss>

