<?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: Assign Flag as minimum value , if same value then last records flag in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960587#M374620</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover expandtabs;
input USUBJID	PARAMCD	$ ADTM	:$40. ADY	AVISITN	REPNUM;
cards;
3001	EG	11JAN2024:12:12:37	29	7	1
3001	EG	11JAN2024:12:13:30	29	7	2
3001	EG	11JAN2024:12:14:07	29	7	3
3001	EG	11JAN2024:14:02:35	29	7	1
3001	EG	11JAN2024:14:03:12	29	7	2
3001	EG	11JAN2024:14:03:50	29	7	3
3002	EG	25JAN2023:14:02:22	169	7	1
3002	EG	25JAN2023:14:05:28	169	7	2
3002	EG	25JAN2023:14:08:28	169	7	3
3002	EG	01FEB2023:13:55:43	176	7	1
3002	EG	01FEB2023:13:58:46	176	7	2
3002	EG	01FEB2023:14:01:47	176	7	3
;
data temp;
 set have;
 if REPNUM=1 then group+1;
run;
proc sql;
create table level_ady as
select usubjid,count(distinct ady) as n
 from have
  group by usubjid;
quit;
data temp2;
 merge temp level_ady;
 by usubjid;
run;
data want;
 do until(last.group);
  set temp2;
  by usubjid group;
  if first.usubjid then first=1;
  if last.usubjid then last=1;
 end;
 do until(last.group);
  set temp2;
  by usubjid group;
  if n=1 and last then new_flag='Y';
  if n&amp;gt;1 and first then new_flag='Y';
  output;
 end;
 drop n group first last;
 run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 01 Mar 2025 07:45:40 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2025-03-01T07:45:40Z</dc:date>
    <item>
      <title>Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960578#M374619</link>
      <description>&lt;P&gt;Hi Team ,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am not getting flag correctly&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is data&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;USUBJID&lt;/TD&gt;&lt;TD&gt;PARAMCD&lt;/TD&gt;&lt;TD&gt;ADTM&lt;/TD&gt;&lt;TD&gt;ADY&lt;/TD&gt;&lt;TD&gt;AVISITN&lt;/TD&gt;&lt;TD&gt;REPNUM&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:12:37&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:13:30&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:14:07&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:02:35&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:03:12&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:03:50&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:02:22&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:05:28&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:08:28&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:13:55:43&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:13:58:46&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:14:01:47&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In Above i have sorted the data by USUBJID PARAMCD AVISITN ADTM REPNUM.&lt;/P&gt;&lt;P&gt;I am try to flag minmum ADY three sets of (REPNUM) in same AVISITN , if same ADY for Two sets of REPNUM in same AVISITN then Flag Last three records by ADY value .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is expecting want new_falg&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;USUBJID&lt;/TD&gt;&lt;TD&gt;PARAMCD&lt;/TD&gt;&lt;TD&gt;ADTM&lt;/TD&gt;&lt;TD&gt;ADY&lt;/TD&gt;&lt;TD&gt;AVISITN&lt;/TD&gt;&lt;TD&gt;REPNUM&lt;/TD&gt;&lt;TD&gt;NEW_FLAG&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:12:37&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:13:30&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&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;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:12:14:07&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&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;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:02:35&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:03:12&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3001&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;11JAN2024:14:03:50&lt;/TD&gt;&lt;TD&gt;29&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:02:22&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:05:28&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;25JAN2023:14:08:28&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:13:55:43&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:13:58:46&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&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;3002&lt;/TD&gt;&lt;TD&gt;EG&lt;/TD&gt;&lt;TD&gt;01FEB2023:14:01:47&lt;/TD&gt;&lt;TD&gt;176&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;in Above first subject 3001 have same ADY for first 6 records , but need flag second set of REPNUM records&amp;nbsp;&lt;/P&gt;&lt;P&gt;For second subject&amp;nbsp; 3002 have different ADY for two sets for REPNUM , so will flag minimum ADY that is ADY = 169 records will flag.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="raja777pharma_0-1740811447582.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/105053i9088651E0098005D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="raja777pharma_0-1740811447582.png" alt="raja777pharma_0-1740811447582.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Raja.&lt;/P&gt;</description>
      <pubDate>Sat, 01 Mar 2025 06:44:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960578#M374619</guid>
      <dc:creator>raja777pharma</dc:creator>
      <dc:date>2025-03-01T06:44:17Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960587#M374620</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover expandtabs;
input USUBJID	PARAMCD	$ ADTM	:$40. ADY	AVISITN	REPNUM;
cards;
3001	EG	11JAN2024:12:12:37	29	7	1
3001	EG	11JAN2024:12:13:30	29	7	2
3001	EG	11JAN2024:12:14:07	29	7	3
3001	EG	11JAN2024:14:02:35	29	7	1
3001	EG	11JAN2024:14:03:12	29	7	2
3001	EG	11JAN2024:14:03:50	29	7	3
3002	EG	25JAN2023:14:02:22	169	7	1
3002	EG	25JAN2023:14:05:28	169	7	2
3002	EG	25JAN2023:14:08:28	169	7	3
3002	EG	01FEB2023:13:55:43	176	7	1
3002	EG	01FEB2023:13:58:46	176	7	2
3002	EG	01FEB2023:14:01:47	176	7	3
;
data temp;
 set have;
 if REPNUM=1 then group+1;
run;
proc sql;
create table level_ady as
select usubjid,count(distinct ady) as n
 from have
  group by usubjid;
quit;
data temp2;
 merge temp level_ady;
 by usubjid;
run;
data want;
 do until(last.group);
  set temp2;
  by usubjid group;
  if first.usubjid then first=1;
  if last.usubjid then last=1;
 end;
 do until(last.group);
  set temp2;
  by usubjid group;
  if n=1 and last then new_flag='Y';
  if n&amp;gt;1 and first then new_flag='Y';
  output;
 end;
 drop n group first last;
 run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 01 Mar 2025 07:45:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960587#M374620</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-03-01T07:45:40Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960595#M374621</link>
      <description>&lt;P&gt;Hi Ksharp,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for code, however&amp;nbsp; i am not getting correctly when i have multiple PARAMCD and AVISITN.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In sample data i have only kept the one PARAMD='EG" and one AVISITN = 7 , but i have other PARAMCD's total 3 and AVISITN have more values&amp;nbsp; for each subject .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So aim is for each set of USUBJID,PARAMCD,AVISIT have only one set REPNUM flag, as mentioned for&amp;nbsp; each USUBJID,PARAMCD, AVISITN&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Above code is getting First REPNUM =1 records , but i need REPNUM = 1,2,3 records for each USUBJID,PARAMCD,AVISITN, which REPNUM set minimum ADY reccords and if same ADY in TWO sets of REPNUM then Last set REPNUM need.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Raja&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some time REPNUM is only less 2 records.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Raja.&lt;/P&gt;</description>
      <pubDate>Sat, 01 Mar 2025 08:47:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960595#M374621</guid>
      <dc:creator>raja777pharma</dc:creator>
      <dc:date>2025-03-01T08:47:48Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960616#M374625</link>
      <description>&lt;P&gt;This is a pretty tricky problem.&amp;nbsp; It might help if we understood what the purpose of the NEW_FLAG variable is?&lt;/P&gt;</description>
      <pubDate>Sat, 01 Mar 2025 15:32:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960616#M374625</guid>
      <dc:creator>quickbluefish</dc:creator>
      <dc:date>2025-03-01T15:32:45Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960617#M374626</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is to keep records only distinct by USUBJID,PARAMCD,AVSITN and REPNUM&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Raja&lt;/P&gt;</description>
      <pubDate>Sat, 01 Mar 2025 15:38:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960617#M374626</guid>
      <dc:creator>raja777pharma</dc:creator>
      <dc:date>2025-03-01T15:38:26Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960639#M374631</link>
      <description>&lt;P&gt;You need to post more data and output to explain your this complicated question.&lt;/P&gt;
&lt;P&gt;Otherwise, we only could base on your data and guess what you are really looking for .&lt;/P&gt;
&lt;P&gt;The following you could give&amp;nbsp; a try.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have;
infile cards truncover expandtabs;
input USUBJID	PARAMCD	$ ADTM	:$40. ADY	AVISITN	REPNUM;
cards;
3001	EG	11JAN2024:12:12:37	29	7	1
3001	EG	11JAN2024:12:13:30	29	7	2
3001	EG	11JAN2024:12:14:07	29	7	3
3001	EG	11JAN2024:14:02:35	29	7	1
3001	EG	11JAN2024:14:03:12	29	7	2
3001	EG	11JAN2024:14:03:50	29	7	3
3002	EG	25JAN2023:14:02:22	169	7	1
3002	EG	25JAN2023:14:05:28	169	7	2
3002	EG	25JAN2023:14:08:28	169	7	3
3002	EG	01FEB2023:13:55:43	176	7	1
3002	EG	01FEB2023:13:58:46	176	7	2
3002	EG	01FEB2023:14:01:47	176	7	3
;
data temp;
 set have;
 if REPNUM=1 then group+1;
run;
proc sql;
create table level_ady as
select usubjid,PARAMCD,AVISITN,count(distinct ady) as n
 from have
  group by usubjid,&lt;STRONG&gt;PARAMCD,AVISITN&lt;/STRONG&gt;;
quit;
data temp2;
 merge temp level_ady;
 by usubjid &lt;STRONG&gt;PARAMCD AVISITN&lt;/STRONG&gt;;
run;
data want;
 do until(last.group);
  set temp2;
  by usubjid &lt;STRONG&gt;PARAMCD AVISITN&lt;/STRONG&gt; group;
  if first.usubjid then first=1;
  if last.usubjid then last=1;
 end;
 do until(last.group);
  set temp2;
  by usubjid &lt;STRONG&gt;PARAMCD AVISITN&lt;/STRONG&gt; group;
  if n=1 and last then new_flag='Y';
  if n&amp;gt;1 and first then new_flag='Y';
  output;
 end;
 drop n group first last;
 run;&lt;/PRE&gt;</description>
      <pubDate>Sun, 02 Mar 2025 01:23:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960639#M374631</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-03-02T01:23:35Z</dc:date>
    </item>
    <item>
      <title>Re: Assign Flag as minimum value , if same value then last records flag</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960679#M374637</link>
      <description>&lt;P&gt;This code flags the last-encountered triplet of observations that have any instance of ADY with the minimum value for a&amp;nbsp;USUBJID/PARAMCD/AVISITN group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The program assumes:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Data are sorted by&amp;nbsp;USUBJID/PARAMCD/AVISITN.&lt;/LI&gt;
&lt;LI&gt;Records come in groups of three consecutive observations.&lt;/LI&gt;
&lt;LI&gt;Each such triplet starts with REPNUM=1 (and no other observation has REPNUM=1).&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover expandtabs;
input USUBJID	PARAMCD	$ ADTM	:$40. ADY	AVISITN	REPNUM;
cards;
3001	EG	11JAN2024:12:12:37	29	7	1
3001	EG	11JAN2024:12:13:30	29	7	2
3001	EG	11JAN2024:12:14:07	29	7	3
3001	EG	11JAN2024:14:02:35	29	7	1
3001	EG	11JAN2024:14:03:12	29	7	2
3001	EG	11JAN2024:14:03:50	29	7	3
3002	EG	25JAN2023:14:02:22	169	7	1
3002	EG	25JAN2023:14:05:28	169	7	2
3002	EG	25JAN2023:14:08:28	169	7	3
3002	EG	01FEB2023:13:55:43	176	7	1
3002	EG	01FEB2023:13:58:46	176	7	2
3002	EG	01FEB2023:14:01:47	176	7	3
run;

data want (drop=_:);
  set have (in=firstpass)  have (in=secondpass);
  by usubjid paramcd avisitn;

  if first.avisitn then call missing(_rep_group,_min_ady,_min_group);
  retain _rep_group -- _min_group;

  if firstpass then do;
    if repnum=1 then _rep_group+1;
    _min_ady=min(ady,_min_ady);
    if ady=_min_ady then _min_group=_rep_group;
  end;

  if secondpass;
  if repnum=1 then _min_group=_min_group-1;
  if _min_group=0 then new_flag='Y';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Each&amp;nbsp;USUBJID/PARAMCD/AVISITN group is passed through twice.&amp;nbsp; The first time finds the minimum ADY and identifies the most recent triplet (_MIN_GROUP) having that minimum.&amp;nbsp; During the second pass _MIN_GROUP is decremented every time REPNUM=1 is encountered.&amp;nbsp; When it becomes zero, that's the group you want to flag.&amp;nbsp; After that group, the variable _MIN_GROUP will decrement to negative values for subsequent triplets.&amp;nbsp; These were determined NOT to have the minimum ADY in the first pass.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Mar 2025 01:16:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Assign-Flag-as-minimum-value-if-same-value-then-last-records/m-p/960679#M374637</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2025-03-03T01:16:14Z</dc:date>
    </item>
  </channel>
</rss>

