<?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: Create new variables by lookup across row in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301694#M63893</link>
    <description>&lt;PRE&gt;
data have;
infile cards dlm='09'x truncover;
input id	a	b	c;
cards;
1	2	2	1
2	3	1	0
3	1	0	0
4	1	2	3
5	3	2	1
;
run;


data _null_;
 set have end=last;
 retain max;
 temp=max(of a--c);
 if temp gt max then max=temp;
 if last then call symputx('n',max);
 drop temp;
run;
data want;
 set have;
 array x{*} a--c;
 array g{*} g1-g&amp;amp;n;
 do i=1 to dim(g); 
  if i in x then g{i}=1;
   else g{i}=0;
 end;
 drop i;
run;

&lt;/PRE&gt;</description>
    <pubDate>Fri, 30 Sep 2016 04:09:03 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2016-09-30T04:09:03Z</dc:date>
    <item>
      <title>Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301572#M63846</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying new variables by looking across the different variables (columns) in a row (observation).&lt;/P&gt;&lt;P&gt;have:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;want:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;g1&lt;/TD&gt;&lt;TD&gt;g2&lt;/TD&gt;&lt;TD&gt;g3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If the first row (from a to c) contains value 1 then &amp;nbsp;g1 will be set to 1 else 0. &amp;nbsp;if &amp;nbsp;the 1st row (from a to c) contains value 2 then g2 set to 1 else 0 and so on.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help to prepare this dataset in sas?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 20:15:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301572#M63846</guid>
      <dc:creator>ari</dc:creator>
      <dc:date>2016-09-29T20:15:48Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301580#M63850</link>
      <description>&lt;P&gt;Declare two arrays, one for old and one for new variables.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Loop through (do loop) and use whichN to search for each value.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Array old(*) old1-old10;&lt;/P&gt;
&lt;P&gt;array new(*) new1-new10 (10*0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do i=1 to dim(new);&lt;/P&gt;
&lt;P&gt;new(I) = whichn(i, of old(*)) &amp;gt; 0;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 17:57:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301580#M63850</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-09-29T17:57:53Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301584#M63853</link>
      <description>&lt;P&gt;The suggestion you received about arrays and WHICHN is a good approach.&amp;nbsp; However, to get it exactly right, you may need to supply a few more details.&amp;nbsp; ("And so on" doesn't count.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you need a variable for g0?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is g3 the maximum that&amp;nbsp; you would need?&amp;nbsp; (If not, what is the maximum?)&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 18:05:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301584#M63853</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-09-29T18:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301592#M63857</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding﻿&lt;/a&gt;&amp;nbsp;There are about 100 input &amp;nbsp;variables. g3 is the maximum. So, I would need from g0 (minimum) to g3 (maximum).&lt;/P&gt;&lt;P&gt;Thanks for the help.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 20:05:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301592#M63857</guid>
      <dc:creator>ari</dc:creator>
      <dc:date>2016-09-29T20:05:56Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301593#M63858</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;, thanks for the help.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Sep 2016 06:16:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301593#M63858</guid>
      <dc:creator>ari</dc:creator>
      <dc:date>2016-09-30T06:16:52Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301627#M63870</link>
      <description>&lt;P&gt;So change the array lengths and the do loop to match your criteria. If you run into issues, post your code.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 20:14:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301627#M63870</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-09-29T20:14:15Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301644#M63875</link>
      <description>&lt;P&gt;It's probably easiest to change the dimensions of the G array to include 0:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;array old {100} list all the names here ....;&lt;/P&gt;
&lt;P&gt;array g {0:3} g0 - g3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do _n_=0 to 3;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; g{_n_} = whichn(_n_, of old{*}) &amp;gt; 0;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 21:25:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301644#M63875</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-09-29T21:25:06Z</dc:date>
    </item>
    <item>
      <title>Re: Create new variables by lookup across row</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301694#M63893</link>
      <description>&lt;PRE&gt;
data have;
infile cards dlm='09'x truncover;
input id	a	b	c;
cards;
1	2	2	1
2	3	1	0
3	1	0	0
4	1	2	3
5	3	2	1
;
run;


data _null_;
 set have end=last;
 retain max;
 temp=max(of a--c);
 if temp gt max then max=temp;
 if last then call symputx('n',max);
 drop temp;
run;
data want;
 set have;
 array x{*} a--c;
 array g{*} g1-g&amp;amp;n;
 do i=1 to dim(g); 
  if i in x then g{i}=1;
   else g{i}=0;
 end;
 drop i;
run;

&lt;/PRE&gt;</description>
      <pubDate>Fri, 30 Sep 2016 04:09:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-new-variables-by-lookup-across-row/m-p/301694#M63893</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-09-30T04:09:03Z</dc:date>
    </item>
  </channel>
</rss>

