<?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: Help with finding the lowest value after passing above a level in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Help-with-finding-the-lowest-value-after-passing-above-a-level/m-p/162022#M263400</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; *start tracking the lowest level;&lt;/P&gt;&lt;P&gt;&amp;nbsp; minprice=100000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; minprice_id=0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set have nobs=nobs;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; j+1;&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do k=j to nobs until (found=1 or found=2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have(keep=id&amp;nbsp; price rename=(id=id3 price=price3)) point=k;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if minprice&amp;gt;price3 then do; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 Aug 2014 01:05:27 GMT</pubDate>
    <dc:creator>hhchenfx</dc:creator>
    <dc:date>2014-08-15T01:05:27Z</dc:date>
    <item>
      <title>Help with finding the lowest value after passing above a level</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-finding-the-lowest-value-after-passing-above-a-level/m-p/162021#M263399</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;I am strunggling with the below problem and I apprecaite it if you could help me out.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My data reports the price for each day.&lt;/P&gt;&lt;P&gt;It also has the trackingdate variable that basically the date I start tracking price movement.&lt;/P&gt;&lt;P&gt;I have outlevel which mean I stop tracking if price hit that outlevel&lt;/P&gt;&lt;P&gt;and next1 and next2 next3 which are the 3 critical levels.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I want to do is that: for each trackingdate, I want to find if it hit the Next1 level. If it hit, I want to track the Lowest price before price hit either (OutLevel or Next2)&lt;/P&gt;&lt;P&gt;The time line looks like that:&lt;/P&gt;&lt;P&gt;trackingstart&amp;nbsp; ..... Hit Next1&amp;nbsp; ......... the lowest ...........End when price hit either (OutLevel or Next2)&lt;/P&gt;&lt;P&gt;For example, for the first trackingdate, price hit Next1 on record2. And then it hit above Next2 at record5. So between record2 and 5, the lowest is 7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If it hit Outlevel before Next1, simply move to next tracking date. The example is trackingdate 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My code work ok for the first 2 records of trackingdate. Then it starts messsing up. The Id even turn different on that trackingdate 3 and 4.&lt;/P&gt;&lt;P&gt;I have no idea how to fix it now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for reading my post.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HHC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input price&amp;nbsp; trackingdate outlevel next1 next2 next3;&lt;BR /&gt;datalines;&lt;BR /&gt;7 1 4 20 30 40&lt;BR /&gt;20 . . . . .&lt;BR /&gt;9 . . . . .&lt;BR /&gt;7 . . . . .&lt;BR /&gt;35 . . . . .&lt;BR /&gt;15 . . . . .&lt;BR /&gt;31 10 40 50 60&lt;BR /&gt;22 . . . . .&lt;BR /&gt;2 . . . . .&lt;BR /&gt;30 . . . . .&lt;BR /&gt;50 . . . . .&lt;BR /&gt;5 . . . . .&lt;BR /&gt;7 1 10 20 35 50&lt;BR /&gt;11 . . . . .&lt;BR /&gt;15 1 8 20 30 40&lt;BR /&gt;30 . . . . .&lt;BR /&gt;50 . . . . .&lt;BR /&gt;5 . . . . .&lt;BR /&gt;;run;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;data have; set have;&lt;BR /&gt;id=_n_;run; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;*------------------------------------------------------------------------------------------------------&lt;BR /&gt;if price hit next1, start tracking the priceest value before it hit either:&lt;BR /&gt;next2 OR OutLevel&lt;BR /&gt;*------------------------------------------------------------------------------------------------------;&lt;/P&gt;&lt;P&gt;*found=1 means reach to a level and then drop to SL &lt;BR /&gt;*found=2 means we have a minprice;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;drop i ;&lt;BR /&gt;set have nobs=nobs;&lt;BR /&gt;i+1;&lt;BR /&gt;if trackingdate^=. then do;&lt;/P&gt;&lt;P&gt;*minprice=0;&lt;/P&gt;&lt;P&gt; do j=i+1 to nobs until (found=1 or found=2);&lt;BR /&gt; set have(keep=id price rename=(id=id2 price=price2)) point=j;&lt;/P&gt;&lt;P&gt; *if Outlevel is hit, FIRST PRIORITY EXIT;&lt;BR /&gt;&amp;nbsp; IF price2&amp;lt;=outlevel then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; found=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; minprice=outlevel;&lt;BR /&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; IF price2&amp;gt;=next1 then do; &lt;BR /&gt;&amp;nbsp; *start tracking the lowest level;&lt;BR /&gt;&amp;nbsp; minprice=100000;&lt;BR /&gt;&amp;nbsp; minprice_id=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set have nobs=nobs;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; j+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do k=j to nobs until (found=1 or found=2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set have(keep=id&amp;nbsp; price rename=(id=id3 price=price3)) point=k;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if minprice&amp;gt;price3 then do; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minprice=price3; *record lowest value;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minprice_id=id3; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Exit condition 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if price3&amp;lt;outlevel then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minprice=outlevel;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Exit condition 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if price3&amp;gt;next2 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found=2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt; end;&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data want; set want;&lt;BR /&gt;drop price2 price2 price3 price3;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Aug 2014 23:12:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-finding-the-lowest-value-after-passing-above-a-level/m-p/162021#M263399</guid>
      <dc:creator>hhchenfx</dc:creator>
      <dc:date>2014-08-14T23:12:27Z</dc:date>
    </item>
    <item>
      <title>Re: Help with finding the lowest value after passing above a level</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-with-finding-the-lowest-value-after-passing-above-a-level/m-p/162022#M263400</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; *start tracking the lowest level;&lt;/P&gt;&lt;P&gt;&amp;nbsp; minprice=100000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; minprice_id=0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set have nobs=nobs;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; j+1;&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do k=j to nobs until (found=1 or found=2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have(keep=id&amp;nbsp; price rename=(id=id3 price=price3)) point=k;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if minprice&amp;gt;price3 then do; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Aug 2014 01:05:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-with-finding-the-lowest-value-after-passing-above-a-level/m-p/162022#M263400</guid>
      <dc:creator>hhchenfx</dc:creator>
      <dc:date>2014-08-15T01:05:27Z</dc:date>
    </item>
  </channel>
</rss>

