<?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: Data cleaning: deleting event that proceed or are too far from a set event in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706126#M216703</link>
    <description>&lt;P&gt;I think I might have solved the problem! It's really the most ridiculous fix. It seems like SAS does not like 'Y' in the arrays. I changed tem to 1 :&lt;/P&gt;
&lt;LI-CODE lang="sas"&gt;data want (drop=d);
  set have (where=(drug=1) in=firstpass)
      have (in=secondpass);
  by id;

  array hosp_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d)} _temporary_;
  array ambl_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d)} _temporary_;

  if first.id then call missing (of hosp_dates{*}, of ambl_dates{*});

  if firstpass then do;
    do d=service_date-90 to service_date+90; hosp_dates{d}=1; end;
    do d=service_date to service_date+90;    ambl_dates{d}=1; end;
  end;

  if secondpass;
  if (drug=1) or (hosp=1 and hosp_dates{service_date}=1) or (ambl=1 and ambl_dates{service_date}=1);
run;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and it appears to be working. Unbelievable how much time I put into this!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 15 Dec 2020 21:24:39 GMT</pubDate>
    <dc:creator>Primavera</dc:creator>
    <dc:date>2020-12-15T21:24:39Z</dc:date>
    <item>
      <title>Data cleaning: deleting event that proceed or are too far from a set event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/705214#M216276</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am working with health care date. I have a data set in which patients with unique IDs have either received a drug, ambulatory care or been hospitalized. My event of interest is receiving a drug and hospitalization or ambulatory care are judged useful or not based on drug use. Basically:&lt;/P&gt;
&lt;P&gt;1. If a patient has received ambulatory care before using the drug then I do not need that ambulatory service. Also if the patient has received ambulatory care more than 90 days after receiving the drug I do not need that ambulatory care.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. If a patient has been hospitalized within 90 days prior to receiving the drug I do want that hospitalization. Also, if a patient has been hospitalized within&amp;nbsp;90 days after receiving the drug I do need that hospitalization.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is how original data set might look like:&lt;/P&gt;
&lt;TABLE width="343"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="68"&gt;ID&lt;/TD&gt;
&lt;TD width="71"&gt;service_date&lt;/TD&gt;
&lt;TD width="68"&gt;Drug&lt;/TD&gt;
&lt;TD width="68"&gt;amb&lt;/TD&gt;
&lt;TD width="68"&gt;Hosp&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;12-May-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;20-May-12&lt;/TD&gt;
&lt;TD&gt;1&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;1&lt;/TD&gt;
&lt;TD&gt;29-Jun-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;1&lt;/TD&gt;
&lt;TD&gt;30-Sep-12&lt;/TD&gt;
&lt;TD&gt;1&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;1&lt;/TD&gt;
&lt;TD&gt;15-Dec-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;1&lt;/TD&gt;
&lt;TD&gt;19-Nov-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;13-May-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;13-Jul-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;18-Jul-12&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;10-Aug-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;01-Sep-12&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;15-Nov-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;05-Feb-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;18-Feb-13&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;01-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;02-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;07-May-13&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;07-May-14&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;10-Nov-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;20-Nov-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;01-Dec-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;03-Dec-12&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;25-Jan-13&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;01-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;08-Mar-13&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;08-Apr-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;09-Apr-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;03-Aug-14&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;And this is what I expect to get out of the code:&lt;/P&gt;
&lt;TABLE width="352"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="68"&gt;ID&lt;/TD&gt;
&lt;TD width="80"&gt;service_date&lt;/TD&gt;
&lt;TD width="68"&gt;Drug&lt;/TD&gt;
&lt;TD width="68"&gt;amb&lt;/TD&gt;
&lt;TD width="68"&gt;Hosp&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;12-May-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;20-May-12&lt;/TD&gt;
&lt;TD&gt;1&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;1&lt;/TD&gt;
&lt;TD&gt;29-Jun-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;1&lt;/TD&gt;
&lt;TD&gt;30-Sep-12&lt;/TD&gt;
&lt;TD&gt;1&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;1&lt;/TD&gt;
&lt;TD&gt;15-Dec-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;18-Jul-12&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;10-Aug-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;01-Sep-12&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;15-Nov-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;18-Feb-13&lt;/TD&gt;
&lt;TD&gt;1&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;2&lt;/TD&gt;
&lt;TD&gt;01-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;2&lt;/TD&gt;
&lt;TD&gt;02-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;07-May-13&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;10-Nov-12&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;03-Dec-12&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;25-Jan-13&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;01-Mar-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;08-Mar-13&lt;/TD&gt;
&lt;TD&gt;1&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;3&lt;/TD&gt;
&lt;TD&gt;08-Apr-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&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;3&lt;/TD&gt;
&lt;TD&gt;09-Apr-13&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have come up with some ways to clean up my data set but it has many data steps like reversing the data set and&amp;nbsp; frankly I am not sure if it is actually working.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does anyone have a reliable compact code for this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;</description>
      <pubDate>Thu, 10 Dec 2020 23:00:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/705214#M216276</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2020-12-10T23:00:07Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning: deleting event that proceed or are too far from a set event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/705231#M216287</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your rule can be restated as&amp;nbsp; keep (1) all drug records&amp;nbsp; (2) all ambl records up to 90 days after any drug record, (3) all hosp records within 90 days of any drug record.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So pass through the drug records for a given id. Keep an two arrays indexed by dates covering the entire date range of your study, one array HOSP_DATES will have a "Y" for&amp;nbsp; all qualifying elements (i.e. all qualifying hospiital dates).&amp;nbsp; &amp;nbsp;A similar AMBL_DATES array can be kept for ambulatory records:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=d);
  set have (where=(drug=1) in=firstpass)
      have (in=secondpass);
&lt;BR /&gt;  /* Correction - put in &lt;EM&gt;&lt;STRONG&gt;$1&lt;/STRONG&gt; &lt;/EM&gt;to make the arrays as character arrays */
  array hosp_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d) &lt;EM&gt;&lt;STRONG&gt;$1&lt;/STRONG&gt; &lt;/EM&gt;_temporary_;
  array ambl_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d) &lt;EM&gt;&lt;STRONG&gt;$1&lt;/STRONG&gt; &lt;/EM&gt;_temporary_;

  if first.id then call missing (of hosp_dates{*}, of ambl_dates{*});

  if firstpass then do;
    do d=service_date-90 to service_date+90; hosp_dates{d}='Y'; end;
    do d=service_date to service_date+90;    ambl_dates{d}='Y'; end;
  end;

  if secondpass;
  if (drug=1) or (hosp=1 and hosp_dates{service_date}='Y') or (ambl=1 and ambl_dates{service_date}='Y');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp; &amp;nbsp; I've now corrected the array declarations to specify character arrays.&lt;/P&gt;</description>
      <pubDate>Wed, 16 Dec 2020 00:17:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/705231#M216287</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-12-16T00:17:11Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning: deleting event that proceed or are too far from a set event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706111#M216698</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First of all I want to thank you for taking the time to answer my question. I am not good in SAS and i don't know what I would do without kind strangers who voluntarily answer my questions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I love your answer; it is concise and efficient. But somehow it did not work. There were a few syntax errors; right before both _temporary_ there are missing }. I also added a "by ID" right before defining the arrays because you have used first.id.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I also increased the date range for arrays to make sure everything in my dataset is covered.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After running the code only 2 records were omitted. I was expecting 100 to 200 be omitted. I can see ambulatory care instances that have occurred two years before first onset of drug use in patients are still there. I am going over your code and it seems all correct to me, I don't get why it is not working!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Dec 2020 20:25:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706111#M216698</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2020-12-15T20:25:49Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning: deleting event that proceed or are too far from a set event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706126#M216703</link>
      <description>&lt;P&gt;I think I might have solved the problem! It's really the most ridiculous fix. It seems like SAS does not like 'Y' in the arrays. I changed tem to 1 :&lt;/P&gt;
&lt;LI-CODE lang="sas"&gt;data want (drop=d);
  set have (where=(drug=1) in=firstpass)
      have (in=secondpass);
  by id;

  array hosp_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d)} _temporary_;
  array ambl_dates {%sysevalf("01jan2011"d):%sysevalf("31dec2018"d)} _temporary_;

  if first.id then call missing (of hosp_dates{*}, of ambl_dates{*});

  if firstpass then do;
    do d=service_date-90 to service_date+90; hosp_dates{d}=1; end;
    do d=service_date to service_date+90;    ambl_dates{d}=1; end;
  end;

  if secondpass;
  if (drug=1) or (hosp=1 and hosp_dates{service_date}=1) or (ambl=1 and ambl_dates{service_date}=1);
run;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and it appears to be working. Unbelievable how much time I put into this!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Dec 2020 21:24:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706126#M216703</guid>
      <dc:creator>Primavera</dc:creator>
      <dc:date>2020-12-15T21:24:39Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning: deleting event that proceed or are too far from a set event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706155#M216709</link>
      <description>&lt;P&gt;You defined the arrays as numeric.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Dec 2020 23:00:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-cleaning-deleting-event-that-proceed-or-are-too-far-from-a/m-p/706155#M216709</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-12-15T23:00:08Z</dc:date>
    </item>
  </channel>
</rss>

