<?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: Create a loop with multiple conditions in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/752064#M236842</link>
    <description>&lt;P&gt;One more question. What if I want to skip the first 2 records (from the example above) even if the value =&amp;gt;5? The idea is that the first 2 records are irrelevant regardless the value.&lt;/P&gt;</description>
    <pubDate>Mon, 05 Jul 2021 11:45:07 GMT</pubDate>
    <dc:creator>Vic6</dc:creator>
    <dc:date>2021-07-05T11:45:07Z</dc:date>
    <item>
      <title>Create a loop with multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/746695#M234268</link>
      <description>&lt;P&gt;Hi guys,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to create a continuous loop that will meet the following conditions:&lt;/P&gt;&lt;P&gt;- identify first value&amp;gt;= 4;&lt;/P&gt;&lt;P&gt;- if value&amp;gt;=4 then skip the next 2 records (not relevant for my analysis) and starting from record no 3, count next 5 records; after 5 records add a fixed numeric value (3.14);&lt;/P&gt;&lt;P&gt;- if while counting the 5 records in scope you will find another value&amp;gt;=5 then stop counting, add a fixed numeric value (1.03) and start again from the beginning.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you help me find a solution? Please find below an example of the expected result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Variable&lt;/TD&gt;&lt;TD&gt;New_column_with_numeric_value&lt;/TD&gt;&lt;TD&gt;Counter&lt;/TD&gt;&lt;TD&gt;Explanations&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;variable &amp;gt;=5 identified;START&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;start counting&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1.03&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;add value for counter&amp;lt;5, reset counter and start againg&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;start counting&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3.14&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;counter=5 then 3.14; STOP&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;wait for next variable&amp;gt;=5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;wait for next variable&amp;gt;=5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;variable &amp;gt;=5 identified;START&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;skipp first 2 records&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;start counting&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3.14&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;counter=5 then 3.14; STOP&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 09 Jun 2021 09:32:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/746695#M234268</guid>
      <dc:creator>Vic6</dc:creator>
      <dc:date>2021-06-09T09:32:21Z</dc:date>
    </item>
    <item>
      <title>Re: Create a loop with multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/746718#M234279</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/385074"&gt;@Vic6&lt;/a&gt;&amp;nbsp;and welcome to the SAS Support Communities!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is the change of criteria from "value&amp;gt;=4" in item 1 and 2 to "value&amp;gt;=5" in item 3 and "&lt;SPAN&gt;variable &amp;gt;=5" in column "Explanations" really part of the rules or just a typo? I assumed the latter and used the threshold 5 consistently. For the test data it doesn't matter anyway (as value 4 doesn't occur).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Create test data for demonstration */

data have;
input Variable	@@;
cards;
1 5 2 3 1 6 1 3 2 1 3 3 1 1 2 6 1 2 3 1 1 1 2
;

/* Create variables New and Counter */

data want(drop=_:);
set have;
if variable&amp;gt;=5 then
  if _s then do;
    New=1.03;
    _c=0;
  end;
  else _s=1;
if _s then _c+1;
Counter=max(0,_c-3);
if Counter=5 then do;
  New=3.14;
  _s=0;
  _c=0;
end;
retain _s;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 09 Jun 2021 11:59:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/746718#M234279</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2021-06-09T11:59:16Z</dc:date>
    </item>
    <item>
      <title>Re: Create a loop with multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/750454#M236053</link>
      <description>&lt;P&gt;Many thanks! It works great!&lt;/P&gt;</description>
      <pubDate>Fri, 25 Jun 2021 15:15:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/750454#M236053</guid>
      <dc:creator>Vic6</dc:creator>
      <dc:date>2021-06-25T15:15:25Z</dc:date>
    </item>
    <item>
      <title>Re: Create a loop with multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/752064#M236842</link>
      <description>&lt;P&gt;One more question. What if I want to skip the first 2 records (from the example above) even if the value =&amp;gt;5? The idea is that the first 2 records are irrelevant regardless the value.&lt;/P&gt;</description>
      <pubDate>Mon, 05 Jul 2021 11:45:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/752064#M236842</guid>
      <dc:creator>Vic6</dc:creator>
      <dc:date>2021-07-05T11:45:07Z</dc:date>
    </item>
    <item>
      <title>Re: Create a loop with multiple conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/752069#M236845</link>
      <description>&lt;P&gt;You can extend the first IF-THEN statement as follows to ignore values &amp;gt;=5 in the first two records:&lt;/P&gt;
&lt;PRE&gt;if &lt;FONT color="#3366FF"&gt;&lt;STRONG&gt;_n_&amp;gt;2 &amp;amp;&lt;/STRONG&gt; &lt;/FONT&gt;variable&amp;gt;=5 then&lt;/PRE&gt;</description>
      <pubDate>Mon, 05 Jul 2021 11:59:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-loop-with-multiple-conditions/m-p/752069#M236845</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2021-07-05T11:59:49Z</dc:date>
    </item>
  </channel>
</rss>

