<?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: Data Logic in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-Logic/m-p/182368#M34737</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, that was a bit of a nightmare.&amp;nbsp; The below should work though you will need a by id and reset after each block as I have only done for one id.&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;&amp;nbsp; attrib ID time res format=best. flag format=$2.;&lt;BR /&gt;&amp;nbsp; infile datalines dlm=',' dsd missover;&lt;BR /&gt;&amp;nbsp; input id time flag $ res;&lt;BR /&gt;datalines;&lt;BR /&gt;1,2,,20 &lt;BR /&gt;1,4,Y,02&lt;BR /&gt;1,6,,05 &lt;BR /&gt;1,8,,30&lt;BR /&gt;1,10,,20&lt;BR /&gt;1,12,,04&lt;BR /&gt;1,14,,06&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;;&lt;BR /&gt;run; &lt;/P&gt;&lt;P&gt;data want (keep=id new_time flag new_res recordtyp);&lt;BR /&gt;&amp;nbsp; set have;&lt;BR /&gt;&amp;nbsp; retain min_res min_time flagon;&lt;BR /&gt;&amp;nbsp; attrib new_time new_res format=best.;&lt;BR /&gt;&amp;nbsp; new_time=time;&lt;BR /&gt;&amp;nbsp; new_res=res;&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; if flagon="Y" then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if time in (8,10,12,14) then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_time=min_time;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_res=min_res;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recordtyp="New";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if res &amp;lt;= min_res or min_res=. then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_res=res;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_time=time;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; if flag="Y" then flagon="Y";&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 17 Jul 2014 09:27:52 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2014-07-17T09:27:52Z</dc:date>
    <item>
      <title>Data Logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Logic/m-p/182367#M34736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;All,&lt;/P&gt;&lt;P&gt;i have the following data &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; time&amp;nbsp;&amp;nbsp; flag&amp;nbsp;&amp;nbsp;&amp;nbsp; res&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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; 20 &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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; 05 &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&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; 30&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 04&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 06&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am trying to insert a record at each time point (time) with minimum result(res) from all the records that are after the record that is flagged Y but before the time point(time) for which we&lt;/P&gt;&lt;P&gt;are inserting records under.&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;Here is the sample output that am trying to get to.note that i pasted just one 1 ID as an example, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; time&amp;nbsp;&amp;nbsp; flag&amp;nbsp;&amp;nbsp;&amp;nbsp; res&amp;nbsp;&amp;nbsp;&amp;nbsp; recordtyp&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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; 20 &lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 02&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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; 05 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&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; 30&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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; 05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; New&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The res=5 is minimum value before time=8 and from records that are after the record that is flagged as Y&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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; 05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; New&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The res=5 is minimum value before time=10 and from records that are after the record that that is flagged as Y&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 04&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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; 05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; New&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The res=5 is minimum value before time=12 and from records that are after the record that that is flagged as Y&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 06&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; New&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The res= 4 is minimum value before time=12 and from records that are after the record that that is flagged as Y&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jul 2014 07:07:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Logic/m-p/182367#M34736</guid>
      <dc:creator>Almoha</dc:creator>
      <dc:date>2014-07-17T07:07:57Z</dc:date>
    </item>
    <item>
      <title>Re: Data Logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Logic/m-p/182368#M34737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, that was a bit of a nightmare.&amp;nbsp; The below should work though you will need a by id and reset after each block as I have only done for one id.&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;&amp;nbsp; attrib ID time res format=best. flag format=$2.;&lt;BR /&gt;&amp;nbsp; infile datalines dlm=',' dsd missover;&lt;BR /&gt;&amp;nbsp; input id time flag $ res;&lt;BR /&gt;datalines;&lt;BR /&gt;1,2,,20 &lt;BR /&gt;1,4,Y,02&lt;BR /&gt;1,6,,05 &lt;BR /&gt;1,8,,30&lt;BR /&gt;1,10,,20&lt;BR /&gt;1,12,,04&lt;BR /&gt;1,14,,06&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;;&lt;BR /&gt;run; &lt;/P&gt;&lt;P&gt;data want (keep=id new_time flag new_res recordtyp);&lt;BR /&gt;&amp;nbsp; set have;&lt;BR /&gt;&amp;nbsp; retain min_res min_time flagon;&lt;BR /&gt;&amp;nbsp; attrib new_time new_res format=best.;&lt;BR /&gt;&amp;nbsp; new_time=time;&lt;BR /&gt;&amp;nbsp; new_res=res;&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; if flagon="Y" then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if time in (8,10,12,14) then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_time=min_time;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_res=min_res;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recordtyp="New";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if res &amp;lt;= min_res or min_res=. then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_res=res;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min_time=time;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; if flag="Y" then flagon="Y";&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jul 2014 09:27:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Logic/m-p/182368#M34737</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-07-17T09:27:52Z</dc:date>
    </item>
  </channel>
</rss>

