<?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: Selecting an ID when data spans multiple rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745068#M233514</link>
    <description>Hi Kurt,&lt;BR /&gt;Thank you for your answer, but I am not getting the desired result.&lt;BR /&gt;The long output does not include the 1 or 0 member flag ( 1=Yes and 0=No).&lt;BR /&gt;On the data Want, I need to select the ID if a person was a member for the 90 days BEFORE the event AND 90 days AFTER the event.&lt;BR /&gt;So if the event was 2019/02/15 (feb 15th) then the person would have to have been a member for the following 7 months : Nov, Dec 2018 and Jan-May 2019.</description>
    <pubDate>Wed, 02 Jun 2021 01:44:26 GMT</pubDate>
    <dc:creator>thockaday</dc:creator>
    <dc:date>2021-06-02T01:44:26Z</dc:date>
    <item>
      <title>Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745017#M233485</link>
      <description>&lt;P&gt;Here is my data:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;ID_Number&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;year&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;jan&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;feb&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;mar&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;apr&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;may&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;jun&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;jul&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;aug&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;sep&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;oct&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;nov&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;dec&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;2018&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;2019&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;2018&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;2019&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;An ID qualifies to be selected if they were a member 90 days before and after an event.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If both ID's had an event in &lt;U&gt;Feb 2019&lt;/U&gt; (20190215) which ID number(s) would be selected?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In response to a question - there is an event table containing ID and Event_date YYYYMMDD.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note:&amp;nbsp; (I would expect only ID 2 would be selected)&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jun 2021 19:43:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745017#M233485</guid>
      <dc:creator>thockaday</dc:creator>
      <dc:date>2021-06-01T19:43:09Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745025#M233489</link>
      <description>&lt;P&gt;So, how do we know when an "event" occurs???&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jun 2021 19:25:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745025#M233489</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-06-01T19:25:55Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745029#M233492</link>
      <description>I was just trying to keep it simple as possible, i'm trying to figure out how to process the critera when it spans multiple records - maybe even considering the possibility of flattening the data - IE "ID, "Year/Month", "Flag".&lt;BR /&gt;To answer your question, there is an "Event Table" containing "ID" and "Event date".</description>
      <pubDate>Tue, 01 Jun 2021 19:32:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745029#M233492</guid>
      <dc:creator>thockaday</dc:creator>
      <dc:date>2021-06-01T19:32:08Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745034#M233494</link>
      <description>&lt;P&gt;First of all, make your data intelligent by transposing to a long format, and making SAS dates.&lt;/P&gt;
&lt;P&gt;Then you can use a simple join to find your answer.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data long;
set have;
array m {12} jan--dec;
do month = 1 to 12;
  if m{month)
  then do;
    mem_month = mdy(month,1,year);
    output;
  end;
end;
keep id_number mem_month;
run;

data want;
merge
  long
  have_event
;
by id_number;
if event_date - mem_month le 90 then output;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 01 Jun 2021 19:56:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745034#M233494</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-01T19:56:18Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745068#M233514</link>
      <description>Hi Kurt,&lt;BR /&gt;Thank you for your answer, but I am not getting the desired result.&lt;BR /&gt;The long output does not include the 1 or 0 member flag ( 1=Yes and 0=No).&lt;BR /&gt;On the data Want, I need to select the ID if a person was a member for the 90 days BEFORE the event AND 90 days AFTER the event.&lt;BR /&gt;So if the event was 2019/02/15 (feb 15th) then the person would have to have been a member for the following 7 months : Nov, Dec 2018 and Jan-May 2019.</description>
      <pubDate>Wed, 02 Jun 2021 01:44:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745068#M233514</guid>
      <dc:creator>thockaday</dc:creator>
      <dc:date>2021-06-02T01:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745096#M233525</link>
      <description>&lt;P&gt;So instead of just finding one observation in the span, we need to count if 7 observations can be found.&lt;/P&gt;
&lt;P&gt;An we need to take care of 3-month intervals, which are usually not 90 days.&lt;/P&gt;
&lt;P&gt;See this complete and tested code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID_Number $ year jan feb mar apr may jun jul aug sep oct nov dec;
datalines;
1 2018  0 0 0 1 1 0 0 0 0 0 0 1
1 2019  1 1 1 1 1 1 1 1 1 1 1 1
2 2018  1 1 0 0 1 1 1 1 1 1 1 1
2 2019  1 1 1 1 1 1 0 0 0 0 0 0
;

data have_event;
input id_number $ event_date :yymmdd8.;
format event_date yymmdd10.;
datalines;
1 20190215
2 20190215
;

data long;
set have;
array m {12} jan--dec;
do month = 1 to 12;
  if m{month}
  then do;
    mem_month = mdy(month,1,year);
    output;
  end;
end;
format mem_month yymmdd10.;
keep id_number mem_month;
run;

data want;
merge
  long
  have_event
;
by id_number;
if first.id_number then counter = 0;
if intnx('month',event_date,-3,"b") le mem_month le intnx('month',event_date,3,'b') then counter + 1;
if last.id_number;
if counter ge 7
then flag = 1;
else flag = 0;
keep id_number flag;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;ID_Number	flag
1	0
2	1
&lt;/PRE&gt;
&lt;P&gt;If you comment the KEEP statement, you will see that the counter is 6 and 7, respectively.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jun 2021 08:06:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745096#M233525</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-02T08:06:31Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745207#M233559</link>
      <description>Hi Kurt,&lt;BR /&gt;1. What in the code tells SAS to keep only months with a '1' flag? just wondering.&lt;BR /&gt;2. to determine the 'counter' I would need to:&lt;BR /&gt;A. first take the event date and subtract 90 days and determine what month that was&lt;BR /&gt;so in the example 2/15/19 - 90 = 11/17/18 so (November 2018)&lt;BR /&gt;B. Second add 90 days to the event date and determine that month&lt;BR /&gt;2/15/19 + 90 = 5/16/19 (May 2019)&lt;BR /&gt;&lt;BR /&gt;in this example the range is Nov 2018 to May 2019 (7 months)&lt;BR /&gt;based on when the event date happens, it might not always be 7 months&lt;BR /&gt;for example if the event date was 3/1/19 then the range is 12/01/18 - 5/30/19 (6 months)&lt;BR /&gt;so i have to calculate the number of months from the resulting date range.&lt;BR /&gt;&lt;BR /&gt;thanks for your help with this!&lt;BR /&gt;</description>
      <pubDate>Wed, 02 Jun 2021 15:01:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745207#M233559</guid>
      <dc:creator>thockaday</dc:creator>
      <dc:date>2021-06-02T15:01:38Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745214#M233561</link>
      <description>&lt;P&gt;This filters the 1s:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;if m{month}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;A zero causes this to be false.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since your membership table has only months, the precise dates become irrelevant, so I align everything to the first of a month, first when transposing the dataset, and next when calculating the time window with INTNX.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jun 2021 15:11:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745214#M233561</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-02T15:11:24Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting an ID when data spans multiple rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745237#M233571</link>
      <description>Awesome - thank you!</description>
      <pubDate>Wed, 02 Jun 2021 16:45:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-an-ID-when-data-spans-multiple-rows/m-p/745237#M233571</guid>
      <dc:creator>thockaday</dc:creator>
      <dc:date>2021-06-02T16:45:32Z</dc:date>
    </item>
  </channel>
</rss>

