<?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: SAS Two dimensional Arrays: Reorder the multidimensional arrays based on the minimum in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-Two-dimensional-Arrays-Reorder-the-multidimensional-arrays/m-p/553369#M153879</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/255229"&gt;@smend&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Set array dimensions */

%let d1=3;
%let d2=5;

/* Compute minima and prepare a RENAME statement */

data minima(keep=i m);
set have;
length renlist $8000;
array t[&amp;amp;d2] _temporary_;
array l[&amp;amp;d1,&amp;amp;d2] l:;
do i=1 to &amp;amp;d1;
  do j=1 to &amp;amp;d2;
    t[j]=l[i,j];
  end;
  m=min(of t[*]);
  renlist=catx(' ',renlist,cats('k',i,'_1-k',i,"_&amp;amp;d2=r",i,'_1-r',i,"_&amp;amp;d2 l",
                                    i,'_1-l',i,"_&amp;amp;d2=s",i,'_1-s',i,"_&amp;amp;d2"));
  output;
end;
call symputx('renlist',renlist);
run;

proc sort data=minima;
by m;
run;

/* Create new dataset with rearranged array values */

data want(keep=r: s:);
set have;
set have(rename=(&amp;amp;renlist));
array k[&amp;amp;d1,&amp;amp;d2] k:;
array l[&amp;amp;d1,&amp;amp;d2] l:;
array r[&amp;amp;d1,&amp;amp;d2] r:;
array s[&amp;amp;d1,&amp;amp;d2] s:;
do a=1 to &amp;amp;d1;
  set minima;
  do j=1 to &amp;amp;d2;
    r[a,j]=k[i,j];
    s[a,j]=l[i,j];
  end;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 23 Apr 2019 17:47:44 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2019-04-23T17:47:44Z</dc:date>
    <item>
      <title>SAS Two dimensional Arrays: Reorder the multidimensional arrays based on the minimum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Two-dimensional-Arrays-Reorder-the-multidimensional-arrays/m-p/553317#M153858</link>
      <description>&lt;P&gt;I have multi dimensional arrays (lets say K{3,5}) that I would like to rearrange or change the order based on the minimum values of the multi dimensional arrays (L{3,5}).&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Example:&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input k1_1 $ k1_2 $ k1_3 $ k1_4 $ K1_5 $&lt;BR /&gt;k2_1 $ k2_2 $ K2_3 $ k2_4 $ k2_5 $&lt;BR /&gt;k3_1 $ k3_2 $ k3_3 $ k3_4 $ k3_5 $&lt;BR /&gt;l1_1-l1_5 l2_1-l2_5 l3_1-l3_5;&lt;BR /&gt;datalines;&lt;BR /&gt;a b c d e f g h i j k l m n o 10 5 8 7 9 8 1 2 3 4 8 8 3 20 20&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The minimum of L arrays are:&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data minimum;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;set have;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;array l{3,5} l1_1-l1_5 l2_1-l2_5 l3_1-l3_5;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink1=.;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink2=.;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink3=.;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;do i=1&amp;nbsp; to 5;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if l{1,i}&amp;gt;=0 then do; mink1=min(mink1, l{1,i});end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if l{2,i}&amp;gt;=0 then do; mink2=min(mink2, l{2,i});end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if l{3,i}&amp;gt;=0 then do; mink3=min(mink3, l{3,i});end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;end;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink1=5;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink2=1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;mink3=3;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Therefore, I would like to change the orders of the k arrays based on the minimum l.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data want;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;input&amp;nbsp; &amp;nbsp; &amp;nbsp;r1_1 $ r1_2 $ r1_3 $ r1_4 $ r1_5 $&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; r2_1 $ r2_2 $ r2_3 $ r2_4 $ r2_5 $&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; r3_1 $ r3_2 $ r3_3 $ r3_4 $ r3_5 $&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; s1_1-s1_5 s2_1-s2_5 s3_1-s3_5;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;datalines;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;f g h i j k l m n o a b c d e 8 1 2 3 4 8 8 3 20 20 10 5 8 7 9&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 23 Apr 2019 15:37:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Two-dimensional-Arrays-Reorder-the-multidimensional-arrays/m-p/553317#M153858</guid>
      <dc:creator>smend</dc:creator>
      <dc:date>2019-04-23T15:37:27Z</dc:date>
    </item>
    <item>
      <title>Re: SAS Two dimensional Arrays: Reorder the multidimensional arrays based on the minimum</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Two-dimensional-Arrays-Reorder-the-multidimensional-arrays/m-p/553369#M153879</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/255229"&gt;@smend&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Set array dimensions */

%let d1=3;
%let d2=5;

/* Compute minima and prepare a RENAME statement */

data minima(keep=i m);
set have;
length renlist $8000;
array t[&amp;amp;d2] _temporary_;
array l[&amp;amp;d1,&amp;amp;d2] l:;
do i=1 to &amp;amp;d1;
  do j=1 to &amp;amp;d2;
    t[j]=l[i,j];
  end;
  m=min(of t[*]);
  renlist=catx(' ',renlist,cats('k',i,'_1-k',i,"_&amp;amp;d2=r",i,'_1-r',i,"_&amp;amp;d2 l",
                                    i,'_1-l',i,"_&amp;amp;d2=s",i,'_1-s',i,"_&amp;amp;d2"));
  output;
end;
call symputx('renlist',renlist);
run;

proc sort data=minima;
by m;
run;

/* Create new dataset with rearranged array values */

data want(keep=r: s:);
set have;
set have(rename=(&amp;amp;renlist));
array k[&amp;amp;d1,&amp;amp;d2] k:;
array l[&amp;amp;d1,&amp;amp;d2] l:;
array r[&amp;amp;d1,&amp;amp;d2] r:;
array s[&amp;amp;d1,&amp;amp;d2] s:;
do a=1 to &amp;amp;d1;
  set minima;
  do j=1 to &amp;amp;d2;
    r[a,j]=k[i,j];
    s[a,j]=l[i,j];
  end;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 23 Apr 2019 17:47:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Two-dimensional-Arrays-Reorder-the-multidimensional-arrays/m-p/553369#M153879</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2019-04-23T17:47:44Z</dc:date>
    </item>
  </channel>
</rss>

