<?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: find maximum value from previous rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871946#M344481</link>
    <description>&lt;P&gt;Thank you, Tom. You show me a new method.&lt;/P&gt;</description>
    <pubDate>Tue, 25 Apr 2023 16:45:46 GMT</pubDate>
    <dc:creator>sophielr</dc:creator>
    <dc:date>2023-04-25T16:45:46Z</dc:date>
    <item>
      <title>find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871929#M344470</link>
      <description>&lt;P&gt;Thank you for any help for my question. I have to get red number. '6' is the maximum value which time of assessment recorded before 11:21:00. '8' is the maximum value which time of assessment recorded before 13:59:59. I do not know how to get '6' and '8' by SAS.&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;ubject&lt;/TD&gt;&lt;TD&gt;timepoint(hour)&lt;/TD&gt;&lt;TD&gt;time of assessment&lt;/TD&gt;&lt;TD&gt;NRS score&lt;/TD&gt;&lt;TD&gt;medication&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;want output(NRS score)&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;09:00:59&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;6&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;11:13:00&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;11:21:00&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;8&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;O&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;6&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;12:13:00&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;7&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;13:59:59&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;6&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;O&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#FF6600"&gt;8&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101-0011&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;14:20:00&lt;/FONT&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;8&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101_0011&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;16:10:33&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000"&gt;9&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:06:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871929#M344470</guid>
      <dc:creator>sophielr</dc:creator>
      <dc:date>2023-04-25T16:06:40Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871934#M344472</link>
      <description>&lt;P&gt;I would said: "Take the solution from yesterday and put some effort..."&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards missover;
input subject : $ 20. timepoint time_of_assessment time8. NRS_score medication $;
format time_of_assessment time.;
cards;
101-0011 0 09:00:59 6    
101-0011 1 11:13:00 3    
101-0011 1 11:21:00 8 O 
101-0011 2 12:13:00 7    
101-0011 4 13:59:59 6 O  
101-0011 4 14:20:00 8    
101-0011 6 16:10:33 9  
101-0012 0 09:00:59 6    
101-0012 1 11:13:00 3    
101-0012 1 11:21:00 8 O 
101-0012 2 12:13:00 7    
101-0012 4 17:59:59 6 O  
101-0012 4 18:20:00 1    
101-0012 6 19:10:33 3 
;
run;
proc print;
run;

data have1;
  set have;
  where medication="O";
    
  rangelow = 0;
  rangeup  = time_of_assessment-1;

  keep subject time_of_assessment medication rangelow rangeup;
run;
proc print;
run;

proc sql;
  create table have2 as
  select a.subject, a.time_of_assessment, max(b.NRS_score) as max_score
  from have1 as a, have as b
  where a.subject = b.subject 
    and b.time_of_assessment between a.rangelow and a.rangeup
  group by a.subject, a.time_of_assessment
  order by a.subject, a.time_of_assessment
  ;
quit;
proc print;
run;

data want;
  merge have have2;
  by subject time_of_assessment;
run;
proc print;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:18:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871934#M344472</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2023-04-25T16:18:52Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871939#M344476</link>
      <description>&lt;P&gt;Appreciate,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp;. You help me again.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:23:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871939#M344476</guid>
      <dc:creator>sophielr</dc:creator>
      <dc:date>2023-04-25T16:23:26Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871943#M344479</link>
      <description>&lt;P&gt;I don't follow your description, but your data makes it look like you want the maximum score BEFORE the observation that has MEDICATION='O'.&amp;nbsp; So just use a retained variable to capture the maximum score.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Subject $ hour time :time. score medication $ want ;
  format time tod8. ;
cards;
101-0011 0 09:00:59 6 . . 
101-0011 1 11:13:00 3 . .  
101-0011 1 11:21:00 8 O 6
101-0011 2 12:13:00 7 . .  
101-0011 4 13:59:59 6 O 8
101-0011 4 14:20:00 8 . .   
101_0011 6 16:10:33 9 . .
;

data want ;
  set have;
  by subject ;
  if first.subject then max=.;
  retain max;
  if medication='O' then nrs=max;
  max=max(max,score);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;OBS    Subject     hour        time    score    medication    want    max    nrs

 1     101-0011      0     09:00:59      6                      .      6      .
 2     101-0011      1     11:13:00      3                      .      6      .
 3     101-0011      1     11:21:00      8          O           6      8      6
 4     101-0011      2     12:13:00      7                      .      8      .
 5     101-0011      4     13:59:59      6          O           8      8      8
 6     101-0011      4     14:20:00      8                      .      8      .
 7     101_0011      6     16:10:33      9                      .      9      .
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:35:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871943#M344479</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-04-25T16:35:27Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871945#M344480</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;I based my solution on the one I gave for related question in this thread:&amp;nbsp;&lt;A href="https://communities.sas.com/t5/SAS-Programming/calculate-time-difference-in-one-column/td-p/871588" target="_blank"&gt;https://communities.sas.com/t5/SAS-Programming/calculate-time-difference-in-one-column/td-p/871588&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;but I want to say that if it's about today question I like yours much more!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:45:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871945#M344480</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2023-04-25T16:45:23Z</dc:date>
    </item>
    <item>
      <title>Re: find maximum value from previous rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871946#M344481</link>
      <description>&lt;P&gt;Thank you, Tom. You show me a new method.&lt;/P&gt;</description>
      <pubDate>Tue, 25 Apr 2023 16:45:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-maximum-value-from-previous-rows/m-p/871946#M344481</guid>
      <dc:creator>sophielr</dc:creator>
      <dc:date>2023-04-25T16:45:46Z</dc:date>
    </item>
  </channel>
</rss>

