<?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 find maximum value within a range with conditions in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831794#M328754</link>
    <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;i want to find maximum values within a range and base on the maximum value creat a new column. Here as an example and my code,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;zweck&lt;/TD&gt;&lt;TD&gt;lead&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;54&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;-13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;87&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data Hz.y;&lt;BR /&gt;set Hz.WegeketteP3lead;&lt;BR /&gt;by lead;&lt;BR /&gt;retain max_val;&lt;BR /&gt;drop max_val;&lt;BR /&gt;if lead ne 0 then max_val=lead;&lt;BR /&gt;else do;&lt;BR /&gt;max_val=max(maxval,lead);&lt;BR /&gt;maxLead=max_val;&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;if max_val then do zweckH=catx('-',zweck,7);&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what i want is to find the maximum value between the number before 0 and the maximum value stay just in the same row as orignal like following, at the meantime a new created column 'zweckH' will get the 'zweck'&amp;nbsp; from the row of 'mal_val' and plus7 till 'zweck' is 7:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;zweck&lt;/TD&gt;&lt;TD&gt;lead&lt;/TD&gt;&lt;TD&gt;max_val&lt;/TD&gt;&lt;TD&gt;zweckH&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;54&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;-13&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;87&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Mon, 05 Sep 2022 14:08:39 GMT</pubDate>
    <dc:creator>ZhihanZhou</dc:creator>
    <dc:date>2022-09-05T14:08:39Z</dc:date>
    <item>
      <title>find maximum value within a range with conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831794#M328754</link>
      <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;i want to find maximum values within a range and base on the maximum value creat a new column. Here as an example and my code,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;zweck&lt;/TD&gt;&lt;TD&gt;lead&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;54&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;-13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;87&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data Hz.y;&lt;BR /&gt;set Hz.WegeketteP3lead;&lt;BR /&gt;by lead;&lt;BR /&gt;retain max_val;&lt;BR /&gt;drop max_val;&lt;BR /&gt;if lead ne 0 then max_val=lead;&lt;BR /&gt;else do;&lt;BR /&gt;max_val=max(maxval,lead);&lt;BR /&gt;maxLead=max_val;&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;if max_val then do zweckH=catx('-',zweck,7);&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what i want is to find the maximum value between the number before 0 and the maximum value stay just in the same row as orignal like following, at the meantime a new created column 'zweckH' will get the 'zweck'&amp;nbsp; from the row of 'mal_val' and plus7 till 'zweck' is 7:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;zweck&lt;/TD&gt;&lt;TD&gt;lead&lt;/TD&gt;&lt;TD&gt;max_val&lt;/TD&gt;&lt;TD&gt;zweckH&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;TD&gt;284&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;54&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;4-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;-13&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;TD&gt;167&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;56&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;87&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2-7&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 05 Sep 2022 14:08:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831794#M328754</guid>
      <dc:creator>ZhihanZhou</dc:creator>
      <dc:date>2022-09-05T14:08:39Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value within a range with conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831808#M328764</link>
      <description>&lt;P&gt;Read each group twice (where "group" means every record until either the last of the id, or until lead=0).&amp;nbsp; In the first group-read, determine the max lead value, and the corresponding zweck.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Prior to the second read establish zweckh.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then, in the second pass, reread and test each observation to see lead matches the max value, and adjust the max_val variable accordingly ...and output the observations.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=_:);
  do until (last.id=1 or lead=0);
    set have;
    by id;
    _max=max(_max,lead);
    length zweckh $8;
    if lead=_max then zweckh=cats(zweck);
  end;
  zweckh=catx('-',zweckh,zweck);

  do until (last.id=1 or lead=0);
    set have;
    by id;
    if lead&amp;lt;_max then max_val=0;
    else max_val=_max;
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please provide your sample data &lt;EM&gt;&lt;STRONG&gt;in the form of a working data step&lt;/STRONG&gt;&lt;/EM&gt; if you want responses with tested code.&amp;nbsp; Respondents did that task for you in your previous request, but now it would be worth your time to do it yourself.&lt;/P&gt;</description>
      <pubDate>Mon, 05 Sep 2022 13:42:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831808#M328764</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2022-09-05T13:42:35Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value within a range with conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831837#M328778</link>
      <description>Hello mkeintz,&lt;BR /&gt;&lt;BR /&gt;It works great and simple to unterstand. In addition, I have a question about a condition in this sentence ‘ do until (last.id=1 or lead=0);’, the loop will run till the end of the table which lead by id, so here ‘last.Id=1’ means the value of last.id is 1 or last.if on the first row? Because I’ve tried both situations change or without change the number ‘1’, the result I got are the same and right.</description>
      <pubDate>Mon, 05 Sep 2022 17:04:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/831837#M328778</guid>
      <dc:creator>ZhihanZhou</dc:creator>
      <dc:date>2022-09-05T17:04:40Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value within a range with conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/832058#M328863</link>
      <description>&lt;P&gt;Since mkeintz hasn't answered you follow-up question I'll try to answer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The last.id syntax is returns a 1 if this is the last row with the current value of id. It returns 0 otherwise. This goes along with the "by id" statement that states the data is sorted by the id variable. So the loop runs until this is the last row with a given value for id, or lead=0.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2022 21:12:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/832058#M328863</guid>
      <dc:creator>CurtisMackWSIPP</dc:creator>
      <dc:date>2022-09-06T21:12:17Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value within a range with conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/832093#M328877</link>
      <description>Hello CurtisMackWSIPP,&lt;BR /&gt;&lt;BR /&gt;Thanks for your great answer!</description>
      <pubDate>Wed, 07 Sep 2022 10:15:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-within-a-range-with-conditions/m-p/832093#M328877</guid>
      <dc:creator>ZhihanZhou</dc:creator>
      <dc:date>2022-09-07T10:15:26Z</dc:date>
    </item>
  </channel>
</rss>

