<?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 arrange dataset variables according to other dataset values in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283213#M57694</link>
    <description>&lt;P&gt;I agree that arrays is the right tool for the job, but I think the program can be simplified. &amp;nbsp;Assuming your data sets are sorted by SUBJECT:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;merge x y;&lt;/P&gt;
&lt;P&gt;by subject;&lt;/P&gt;
&lt;P&gt;array s {3};&lt;/P&gt;
&lt;P&gt;array r {3};&lt;/P&gt;
&lt;P&gt;array final {3} _1 _2 _3;&lt;/P&gt;
&lt;P&gt;do _n_=1 to 3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;final{_n_} = s{r{_n_}};&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;* Keep/Drop variables as you see fit.;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
    <pubDate>Sun, 10 Jul 2016 15:27:10 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2016-07-10T15:27:10Z</dc:date>
    <item>
      <title>how to arrange dataset variables according to other dataset values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283205#M57689</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;today i came up with a question.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;well, there are two datasets x &amp;amp; y, dataset x had values derived from some procedures and dataset y had random values, all i need is arrange dataset x variables according to values availed in dataset y.&lt;/P&gt;&lt;P&gt;i'll give you three&amp;nbsp;tables to understand better.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Dataset X&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Subject&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;hour&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;S1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;S2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;S3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;-1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;-1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Dataset Y&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Subject&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;R1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;R2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;R3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;now my expected output is&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Output Dataset&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Subject&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;hour&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;_1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;_2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;_3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;-1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;-1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;7&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;dataset x variables are arranged using the values of dataset y and remember this arrangment varies from subject to subject. in the output dataset for subject 1, _1 variable values&amp;nbsp;are taken from S3, _2 variable&amp;nbsp;&lt;SPAN&gt;values&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;are taken from S1, _3&amp;nbsp;variable&amp;nbsp;&lt;SPAN&gt;values&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;are taken from S2, belongs to dataset X, arranged with reference to values of dataset Y.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;plz help me out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks in advance.&lt;/P&gt;&lt;P&gt;Satish.&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jul 2016 11:44:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283205#M57689</guid>
      <dc:creator>satish123</dc:creator>
      <dc:date>2016-07-10T11:44:28Z</dc:date>
    </item>
    <item>
      <title>Re: how to arrange dataset variables according to other dataset values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283210#M57692</link>
      <description>&lt;P&gt;Your problem is some what tricky. My solution requires the use of arrays.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If X and Y are pre-sorted by subject, then the following can be used. In the first DO-LOOP, R1 to R3 by subject is stored in an array(R). In the second DO-LOOP, variable-values of S1 to S3 are re-arranged using array values of R using array M.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data X;
input sub hr S1 S2 S3;
datalines;
1  -1  6 8  5
1   0 10 9  7
1   2  9 9  6
2  -1  5 7 10
2   0  9 6  8
2   2  8 9  8
;
run;


data Y;
input sub R1 R2 R3;
datalines;
1 3 1 2
2 1 3 2
;
run;

data want;
   do until(last.sub);
      set Y;
      by sub;
      array R[*] R1 - R3;
   end;
   do until(last.sub);
      set X;
      by sub;
      array m[*] _1 - _3;
      array k[*] S1 - S3;
      do i = 1 to dim(m);
         m[i] = k[R[i]];
      end;
      output;
   end;
keep sub hr _:;
run;


&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Another way is to store the data of Y into an array for both the subjects(when _N_ = 1) and re-arrange the variable-values of X as each observation is processed. This code does not require the pre-sorting of the data sets.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   array k[2, 3] _temporary_;
   if _N_ = 1 then do until(eof);
      set Y end = eof;
      array R[*] R1 - R3;
      do i = 1 to dim(R);
         k[sub, i] = R[i];
      end;
   end;
   set X;
   array m[*] _1 _2 _3;
   array S[*] S1 - S3;
   do i = 1 to dim(m);
      m[i] = S[k[sub, i]];
   end;
keep sub hr _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jul 2016 14:22:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283210#M57692</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2016-07-10T14:22:37Z</dc:date>
    </item>
    <item>
      <title>Re: how to arrange dataset variables according to other dataset values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283213#M57694</link>
      <description>&lt;P&gt;I agree that arrays is the right tool for the job, but I think the program can be simplified. &amp;nbsp;Assuming your data sets are sorted by SUBJECT:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;merge x y;&lt;/P&gt;
&lt;P&gt;by subject;&lt;/P&gt;
&lt;P&gt;array s {3};&lt;/P&gt;
&lt;P&gt;array r {3};&lt;/P&gt;
&lt;P&gt;array final {3} _1 _2 _3;&lt;/P&gt;
&lt;P&gt;do _n_=1 to 3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;final{_n_} = s{r{_n_}};&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;* Keep/Drop variables as you see fit.;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Sun, 10 Jul 2016 15:27:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283213#M57694</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-07-10T15:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: how to arrange dataset variables according to other dataset values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283268#M57731</link>
      <description>&lt;P&gt;Thanks to you guys, for your quick and every single reply. it helped me a lot.&lt;/P&gt;&lt;P&gt;thanks again.&lt;/P&gt;</description>
      <pubDate>Mon, 11 Jul 2016 10:30:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-arrange-dataset-variables-according-to-other-dataset/m-p/283268#M57731</guid>
      <dc:creator>satish123</dc:creator>
      <dc:date>2016-07-11T10:30:24Z</dc:date>
    </item>
  </channel>
</rss>

