<?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: Selecting values based on minimum and maximum dates in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388926#M277449</link>
    <description>&lt;P&gt;Does the following do what you are after-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; have;&lt;/P&gt;&lt;P&gt;input ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date&amp;nbsp; : mmddyy10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value;&lt;/P&gt;&lt;P&gt;format date mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2007&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/8/2007&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/9/2008&amp;nbsp;&amp;nbsp; 70&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2010&amp;nbsp;&amp;nbsp; 50&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/3/2008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2009&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 65&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 150&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/2/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 120&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/6/2012&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sql&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;create table want as&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;from have&lt;/P&gt;&lt;P&gt;group by id&lt;/P&gt;&lt;P&gt;having date=min(date) or date=max(date);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 17 Aug 2017 18:15:12 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2017-08-17T18:15:12Z</dc:date>
    <item>
      <title>Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388913#M277448</link>
      <description>&lt;P&gt;Need some help writing a program that selects the smallest and largest values when there are multiple ID entries.&lt;/P&gt;&lt;P&gt;My data looks a bit like this (actual sample attached)&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2007&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/8/2007&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/9/2008&amp;nbsp;&amp;nbsp; 70&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2010&amp;nbsp;&amp;nbsp; 50&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;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/3/2008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2009&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 65&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 150&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/2/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 120&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/6/2012&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For each ID, I want to pick up the values on the first date and the last date. For example, for loan ID 1, I want to identify the value 100 as the earliest value and dump this into a table. My aim is to calculate the change in value between the first and last dates. I need to preserve the dates for reference.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many Thanks for any help!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Attached is some sample data, I'm on verion 7.12&lt;/P&gt;</description>
      <pubDate>Thu, 17 Aug 2017 17:51:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388913#M277448</guid>
      <dc:creator>JohnRidge</dc:creator>
      <dc:date>2017-08-17T17:51:40Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388926#M277449</link>
      <description>&lt;P&gt;Does the following do what you are after-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; have;&lt;/P&gt;&lt;P&gt;input ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date&amp;nbsp; : mmddyy10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value;&lt;/P&gt;&lt;P&gt;format date mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2007&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/8/2007&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/9/2008&amp;nbsp;&amp;nbsp; 70&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2010&amp;nbsp;&amp;nbsp; 50&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/3/2008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6/3/2009&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 65&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 150&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/2/2011&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 120&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/6/2012&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sql&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;create table want as&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;from have&lt;/P&gt;&lt;P&gt;group by id&lt;/P&gt;&lt;P&gt;having date=min(date) or date=max(date);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Aug 2017 18:15:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388926#M277449</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-08-17T18:15:12Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388930#M277450</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by id date;
run;

data want;
set have;
by id;
if first.id or last.id;
run;

data change;
set want;
by id;
value_prev=lag(value);
if last.id then do;
diff = value - value_prev;
end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;OR&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Aug 2017 18:26:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388930#M277450</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-08-17T18:26:49Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388966#M277451</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I modified the Rezza's code and put the information in a row by id:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by id date;
run;

data change;
retain id  firstdate firstvalue lastdate lastvalue diff;
format firstdate lastdate ddmmyy10.;
set have;
by id;
if first.id then 
	do;
		firstdate = date;	
	   firstvalue = value;
	   diff= value;
	end;
if last.id then 
	do;
		lastdate = date;
		lastvalue = value;
		diff = diff - value;
		output;
	end;
drop date value;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Aug 2017 20:50:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388966#M277451</guid>
      <dc:creator>sotojcr</dc:creator>
      <dc:date>2017-08-17T20:50:44Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388988#M277452</link>
      <description>&lt;P&gt;Here's another way to get the min and max dates and the value associated. Another data step on the output would allow the calculation be the min and max values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc summary data=have nway;
   class id;
   var date;
   id value;
   output out=want (drop= _:)  max(date)=date_max 
                   idgrp(max(date) out(value)=maxvalue)
                   min(date)=date_min 
                   idgrp(min(date) out(value)=minvalue);
run;&lt;/PRE&gt;
&lt;P&gt;Minor advantage, no sort needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Aug 2017 22:23:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/388988#M277452</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-08-17T22:23:46Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/389117#M277453</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Great &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;!, but needs one more step to create the difference!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Aug 2017 14:29:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/389117#M277453</guid>
      <dc:creator>sotojcr</dc:creator>
      <dc:date>2017-08-18T14:29:41Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting values based on minimum and maximum dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/389265#M277454</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/19133"&gt;@sotojcr&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;&lt;SPAN&gt;Great &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;!, but needs one more step to create the difference!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Agreed and mentioned. However by the time you get to having 8 or 9 variables that you want the id for a mix of min and max (or median) the number of variables to keep and reset in a data step approach can get cumbersome.&lt;/P&gt;</description>
      <pubDate>Fri, 18 Aug 2017 22:45:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-values-based-on-minimum-and-maximum-dates/m-p/389265#M277454</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-08-18T22:45:03Z</dc:date>
    </item>
  </channel>
</rss>

