<?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: Outputting the maximum value for each variable (by ID) into a new dataset in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528856#M73655</link>
    <description>&lt;P&gt;If you want the last value for each variable, it's easy.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This requires that your data set is sorted by id:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;update have (obs=0) have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will not necessarily be the sum, or the max, or any statistic.&amp;nbsp; It will be the last value found, searching the observations in order.&lt;/P&gt;</description>
    <pubDate>Mon, 21 Jan 2019 18:48:13 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2019-01-21T18:48:13Z</dc:date>
    <item>
      <title>Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528831#M73651</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I&amp;nbsp;am currently working on a longitudinal dataset that contains a lot of 0/1 variables (~90) . The dataset looks something like this (please note there is no pattern to the variable names):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp;initial&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mid1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PCI&lt;/P&gt;&lt;P&gt;100&amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/P&gt;&lt;P&gt;100&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&lt;/P&gt;&lt;P&gt;100&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;200&amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/P&gt;&lt;P&gt;200&amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;300&amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&lt;/P&gt;&lt;P&gt;300&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;300&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/P&gt;&lt;P&gt;300&amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to create a new 'summary' data set where that contains only one observation per ID. The dataset should look something like this:&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN&gt;initial&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mid1&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;final&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;PCI&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;100&amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;1&lt;/P&gt;&lt;P&gt;200&amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;300&amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I do this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The only way I can think of doing this would be to create new variables that sums the 0/1 values for each variable and outputs the last value (using retain and first. last.). Unfortunately, this will take too much time and will require creating a lot of new variables.&amp;nbsp; Is there a simpler way of doing this?&amp;nbsp;&lt;SPAN&gt;I appreciate any help you can offer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jan 2019 18:27:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528831#M73651</guid>
      <dc:creator>lousam</dc:creator>
      <dc:date>2019-01-21T18:27:07Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528834#M73652</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
infile cards truncover;
input ID      var_a        var_b         var_c             var_d;
cards;
100     0                 .                 1                    .
100     .                  0                .                     .
100     .                  .                 .                     1
200    1                  .                 0                    .
200    .                   .                 .                     1
300    0                  .                 .                     .
300     .                  .                 1                    .   
300     .                 0                  .                    .
300     .                 .                   .                    0    
;
proc means data = have nway noprint;
class id;
var var_a--var_d;
output out=want(drop=_:) max=;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 21 Jan 2019 17:57:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528834#M73652</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-01-21T17:57:25Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528845#M73653</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $ initial mid1 final PCI;
datalines;
100 0 . 1 .
100 . 0 . .
100 . . . 1
200 1 . 0 .
200 . . . 1
300 0 . . .
300 . . 1 .
300 . 0 . .
300 . . . 0
;

proc sql;
   create table want as
   select ID
         ,max(initial) as initial
         ,max(mid1) as mid1
         ,max(final) as final
         ,max(PCI) as PCI
   from have
   group by ID;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 21 Jan 2019 18:30:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528845#M73653</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-01-21T18:30:18Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528856#M73655</link>
      <description>&lt;P&gt;If you want the last value for each variable, it's easy.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This requires that your data set is sorted by id:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;update have (obs=0) have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will not necessarily be the sum, or the max, or any statistic.&amp;nbsp; It will be the last value found, searching the observations in order.&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jan 2019 18:48:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528856#M73655</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2019-01-21T18:48:13Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528858#M73656</link>
      <description>&lt;P&gt;if you know variable which you should not include and replace your dataset and libname from the code below&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select cat('max(',trim(name), ') as ', name) into :Val separated by ',' from  dictionary.columns 
where upcase(memname) ="HAVE"
and upcase(Libname) =  "WORK"  
and name ne "ID";
%put &amp;amp;val; 


proc sql;
create table want as 
select id, &amp;amp;val  from have
group by ID;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 21 Jan 2019 18:49:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/528858#M73656</guid>
      <dc:creator>kiranv_</dc:creator>
      <dc:date>2019-01-21T18:49:41Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting the maximum value for each variable (by ID) into a new dataset</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/532180#M73762</link>
      <description>&lt;P&gt;I'm a big fan of by processing. Something like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input ID $ initial mid1 final PCI;&lt;BR /&gt;datalines;&lt;BR /&gt;100 0 . 1 .&lt;BR /&gt;100 . 0 . .&lt;BR /&gt;100 . . . 1&lt;BR /&gt;200 1 . 0 .&lt;BR /&gt;200 . . . 1&lt;BR /&gt;300 0 . . .&lt;BR /&gt;300 . . 1 .&lt;BR /&gt;300 . 0 . .&lt;BR /&gt;300 . . . 0&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data one(keep=ID var1 var2 var3 var4);&lt;BR /&gt;retain var1 var2 var3 var4;&lt;BR /&gt;set have;&lt;BR /&gt;by ID;&lt;BR /&gt;if first.id then do;&lt;BR /&gt;var1=initial;&lt;BR /&gt;var2=mid1;&lt;BR /&gt;var3=final;&lt;BR /&gt;var4=PCI;&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;if var1&amp;lt;initial then var1=initial;&lt;BR /&gt;if var2&amp;lt;mid1 then var2=mid1;&lt;BR /&gt;if var3&amp;lt;final then var3=final;&lt;BR /&gt;if var4&amp;lt;PCI then var4=PCI;&lt;BR /&gt;end;&lt;BR /&gt;if last.ID then output;&lt;BR /&gt;run;&lt;BR /&gt;proc print data=one;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Feb 2019 19:58:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Outputting-the-maximum-value-for-each-variable-by-ID-into-a-new/m-p/532180#M73762</guid>
      <dc:creator>DWilson</dc:creator>
      <dc:date>2019-02-01T19:58:15Z</dc:date>
    </item>
  </channel>
</rss>

