<?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 Retain with array in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752386#M236995</link>
    <description>&lt;P&gt;I have multiple observations for people and want to end up with one observation per person.&amp;nbsp; I also want to retain any YES responses and drop any NO responses from any of the observations for about 20 variables with very different names.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 06 Jul 2021 19:02:09 GMT</pubDate>
    <dc:creator>jk2018</dc:creator>
    <dc:date>2021-07-06T19:02:09Z</dc:date>
    <item>
      <title>Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752386#M236995</link>
      <description>&lt;P&gt;I have multiple observations for people and want to end up with one observation per person.&amp;nbsp; I also want to retain any YES responses and drop any NO responses from any of the observations for about 20 variables with very different names.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 19:02:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752386#M236995</guid>
      <dc:creator>jk2018</dc:creator>
      <dc:date>2021-07-06T19:02:09Z</dc:date>
    </item>
    <item>
      <title>Re: Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752392#M236998</link>
      <description>Use SQL and take the max of each column.&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select ID, max(col1) as col1, max(col2) as col2 ....&lt;BR /&gt;from have&lt;BR /&gt;group by ID;&lt;BR /&gt;quit;&lt;BR /&gt;&lt;BR /&gt;Problem with this approach - you have to list each variable out.</description>
      <pubDate>Tue, 06 Jul 2021 19:18:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752392#M236998</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-07-06T19:18:49Z</dc:date>
    </item>
    <item>
      <title>Re: Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752412#M237007</link>
      <description>&lt;P&gt;I don't follow what your input, or desired output looks like.&amp;nbsp; Could you please provide the input data in the form of a working data step?&amp;nbsp; That would facilitate generating test code.&amp;nbsp; &amp;nbsp; And then please show what the desired output should look like.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 20:40:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752412#M237007</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-07-06T20:40:30Z</dc:date>
    </item>
    <item>
      <title>Re: Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752429#M237020</link>
      <description>&lt;P&gt;The dataset I'm starting with is like this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;OBS&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NAME&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;TOOK_MEDICATION&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;HIGH_BP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;LOW_BP&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;DOE, JOHN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/1950&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&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;DOE, JOHN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/1950&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOE, JOHN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/1950&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOE, JOHN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/1950&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOE, JANE&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12/31/1955&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;6&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOE, JANE&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12/31/1955&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NO&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;I want to end up with this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;OBS&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;NAME&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;DOB&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;TOOK_MEDICATION&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;HIGH_BP&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;LOW_BP&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;DOE, JOHN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/1950&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&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;DOE, JANE&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12/31/1955&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YES&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 21:13:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752429#M237020</guid>
      <dc:creator>jk2018</dc:creator>
      <dc:date>2021-07-06T21:13:36Z</dc:date>
    </item>
    <item>
      <title>Re: Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752449#M237031</link>
      <description>&lt;P&gt;The sample data is not in the form of a working data step, so here is untested code, but at least I know the general layout now:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by name notsorted;
  array vars took_medication -- low_bp;
  array tmp {20} _temporary_;
  if first.name then call missing(of tmp{*});
  do over vars;
    if vars='YES' then tmp{_i_}=1;
  end;
  if last.name;
  do over vars;
    if tmp{_i_}=1 then vars='YES';
    else vars=' ';
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Make sure the size of the TMP array is at least as many as there are variables to be examined.&amp;nbsp; TMP can exceed that number with no ill effects.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jul 2021 22:06:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752449#M237031</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-07-06T22:06:07Z</dc:date>
    </item>
    <item>
      <title>Re: Retain with array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752492#M237049</link>
      <description>&lt;P&gt;That problem would be really easy to solve if the ccc-vars would have 1 and 0 instead of yes/no as values.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
   value YesNo
      1 = 'Yes'
      0 = 'No'     
   ;
run;

proc summary data=work.have nway;
   class Name;
   var took_medication -- low_bp;
   format took_medication -- low_bp YesNo.;
   output out= work.want max=;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Jul 2021 05:08:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Retain-with-array/m-p/752492#M237049</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2021-07-07T05:08:24Z</dc:date>
    </item>
  </channel>
</rss>

