<?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: How do I delete records with a date within 30 days of the previous record, recursively? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881331#M348247</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/444259"&gt;@Fable&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;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Patient_ID Lab_Date anydtdte11.;
format Lab_Date yymmdd10.;
cards;
1111 Jan 1 2023
1111 Jan 15 2023
1111 Feb 3 2023
1111 Feb 16 2023
2222 Jan 2 2023
2222 Jan 20 2023
2222 Feb 8 2023
2222 Feb 10 2023
2222 Feb 12 2023
3333 Jan 15 2023
3333 Feb 5 2023
3333 Feb 18 2023
;

data want(drop=pivot_date);
set have;
by Patient_ID;
if first.Patient_ID then pivot_date=Lab_Date;
else if Lab_Date-pivot_date&amp;lt;=30 then delete;
else pivot_date=Lab_Date;
retain pivot_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sun, 18 Jun 2023 18:23:59 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2023-06-18T18:23:59Z</dc:date>
    <item>
      <title>How do I delete records with a date within 30 days of the previous record, recursively?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881329#M348246</link>
      <description>&lt;P&gt;Say I have a dataset of laboratory records for a set of patients (ordered by ID and date from earliest to latest) with this format, I want to &lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;remove&lt;/FONT&gt; &lt;FONT color="#FF0000"&gt;all the red colored labs&lt;/FONT&gt;&lt;/STRONG&gt; and &lt;STRONG&gt;keep&lt;/STRONG&gt; a&lt;STRONG&gt;ll the black colored ones&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Basically, I want to only keep labs &lt;STRONG&gt;for a specific patient &lt;/STRONG&gt;(labs from different patients should &lt;STRONG&gt;not&lt;/STRONG&gt; be compared&amp;nbsp;against each other)&amp;nbsp;that are done &amp;gt;30 days from the previous lab, while not counting the removed labs when evaluating the next lab (i.e. if a lab is marked in red I want to ignore it when evaluating if the next lab is within 30 days and should thus be removed).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can see for patient 1111, their 3rd lab is within 30 days of their 2nd lab, but because the 2nd lab is already marked for removal the 2nd lab does not count and thus the 3rd lab should be kept.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does any one have any advice or suggestions for how this could be accomplished in 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;Patient_ID&lt;/TD&gt;&lt;TD&gt;Lab_Date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;1111&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Jan 1 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;1111&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Jan 15 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;1111&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Feb 3 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;1111&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Feb 16 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;2222&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Jan 2 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;2222&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Jan 20 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;2222&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Feb 8 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;2222&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Feb 10 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;2222&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Feb 12 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;3333&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Jan 15 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;3333&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;Feb 5 2023&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;3333&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Feb 18 2023&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Sun, 18 Jun 2023 16:37:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881329#M348246</guid>
      <dc:creator>Fable</dc:creator>
      <dc:date>2023-06-18T16:37:37Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete records with a date within 30 days of the previous record, recursively?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881331#M348247</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/444259"&gt;@Fable&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;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Patient_ID Lab_Date anydtdte11.;
format Lab_Date yymmdd10.;
cards;
1111 Jan 1 2023
1111 Jan 15 2023
1111 Feb 3 2023
1111 Feb 16 2023
2222 Jan 2 2023
2222 Jan 20 2023
2222 Feb 8 2023
2222 Feb 10 2023
2222 Feb 12 2023
3333 Jan 15 2023
3333 Feb 5 2023
3333 Feb 18 2023
;

data want(drop=pivot_date);
set have;
by Patient_ID;
if first.Patient_ID then pivot_date=Lab_Date;
else if Lab_Date-pivot_date&amp;lt;=30 then delete;
else pivot_date=Lab_Date;
retain pivot_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 18 Jun 2023 18:23:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881331#M348247</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2023-06-18T18:23:59Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete records with a date within 30 days of the previous record, recursively?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881345#M348253</link>
      <description>&lt;P&gt;This is a good example for using a "subsetting if" and the lag function:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Patient_ID Lab_Date anydtdte11.;
  format Lab_Date yymmdd10.;
cards;
1111 Jan 1 2023
1111 Jan 15 2023
1111 Feb 3 2023
1111 Feb 16 2023
2222 Jan 2 2023
2222 Jan 20 2023
2222 Feb 8 2023
2222 Feb 10 2023
2222 Feb 12 2023
3333 Jan 15 2023
3333 Feb 5 2023
3333 Feb 18 2023
;

data want (drop=_:);
  set have;
  retain _refdate '01jan1900'd;
  if patient_id^=lag(patient_id) or lab_date-_refdate &amp;gt;30;
  _refdate=lab_date;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;It doesn't matter what value you use as the intial value of _refdate, because it will be immediately overwritten with the value of lab_date in the first observation.&amp;nbsp; In fact, any non-missing number could be the initial value - I just decided to use a date-literal to remind the reader that it is being managed as a date variable.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Jun 2023 01:04:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881345#M348253</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-06-19T01:04:16Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete records with a date within 30 days of the previous record, recursively?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881347#M348255</link>
      <description>Very creative solution!</description>
      <pubDate>Mon, 19 Jun 2023 04:27:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-records-with-a-date-within-30-days-of-the/m-p/881347#M348255</guid>
      <dc:creator>whymath</dc:creator>
      <dc:date>2023-06-19T04:27:07Z</dc:date>
    </item>
  </channel>
</rss>

