<?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 Help: creating a new variable by comparing dates with multi-observations per person in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229716#M268004</link>
    <description>&lt;P&gt;I need to create a new binary variable, case &amp;nbsp;(0=no, 1=yes) if a person's disease event date (dz_date) is within a +/- 3 month window of any blood test&amp;nbsp;date (test_date). Each person has many blood test dates but generally only 1 disease date. Each event (disease event or test event) &amp;nbsp;is listed seperately in my dataset and individuals are linked by an ID number (PID).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My data looks like this:&lt;/P&gt;
&lt;TABLE width="345"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;PID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="105"&gt;&lt;STRONG&gt;test_date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="112"&gt;&lt;STRONG&gt;dz_date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;101&lt;/TD&gt;
&lt;TD&gt;4/1/2013&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;101&lt;/TD&gt;
&lt;TD&gt;8/22/2013&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;101&lt;/TD&gt;
&lt;TD&gt;11/10/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;101&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6/18/2013&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;2/11/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;8/14/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;12/23/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2/4/2014&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;203&lt;/TD&gt;
&lt;TD&gt;6/21/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;203&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2/5/2013&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;There are over a million observations in this dataset and the # of entries for each PID is varied. One idea I&amp;nbsp;had is to create an upper and lower limit to measure the dz_date against using the below code but I'm not sure if I&amp;nbsp;can compare values working down the PID column. I thought about using first.PID/last.PID...?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;test_date_lower3= intnx('month',test_date,-3);
test_date_upper3=intnx('month',test_date,+3);&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;Help!&lt;/EM&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 13 Oct 2015 15:05:18 GMT</pubDate>
    <dc:creator>mh3477</dc:creator>
    <dc:date>2015-10-13T15:05:18Z</dc:date>
    <item>
      <title>Help: creating a new variable by comparing dates with multi-observations per person</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229716#M268004</link>
      <description>&lt;P&gt;I need to create a new binary variable, case &amp;nbsp;(0=no, 1=yes) if a person's disease event date (dz_date) is within a +/- 3 month window of any blood test&amp;nbsp;date (test_date). Each person has many blood test dates but generally only 1 disease date. Each event (disease event or test event) &amp;nbsp;is listed seperately in my dataset and individuals are linked by an ID number (PID).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My data looks like this:&lt;/P&gt;
&lt;TABLE width="345"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Obs&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;PID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="105"&gt;&lt;STRONG&gt;test_date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="112"&gt;&lt;STRONG&gt;dz_date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;101&lt;/TD&gt;
&lt;TD&gt;4/1/2013&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;101&lt;/TD&gt;
&lt;TD&gt;8/22/2013&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;101&lt;/TD&gt;
&lt;TD&gt;11/10/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;101&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6/18/2013&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;2/11/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;8/14/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;12/23/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;102&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2/4/2014&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;203&lt;/TD&gt;
&lt;TD&gt;6/21/2013&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;203&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2/5/2013&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;There are over a million observations in this dataset and the # of entries for each PID is varied. One idea I&amp;nbsp;had is to create an upper and lower limit to measure the dz_date against using the below code but I'm not sure if I&amp;nbsp;can compare values working down the PID column. I thought about using first.PID/last.PID...?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;test_date_lower3= intnx('month',test_date,-3);
test_date_upper3=intnx('month',test_date,+3);&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;Help!&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 15:05:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229716#M268004</guid>
      <dc:creator>mh3477</dc:creator>
      <dc:date>2015-10-13T15:05:18Z</dc:date>
    </item>
    <item>
      <title>Re: Help: creating a new variable by comparing dates with multi-observations per person</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229735#M268005</link>
      <description>&lt;P&gt;I took a guess at what output you wanted but here is a solution.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;infile cards dsd;&lt;BR /&gt;informat pid $3. test_date dz_date mmddyy10.;&lt;BR /&gt;format pid $3. test_date dz_date mmddyy10.;&lt;BR /&gt;input PID &amp;nbsp;&amp;nbsp; &amp;nbsp;test_date &amp;nbsp;&amp;nbsp; &amp;nbsp;dz_date;&lt;BR /&gt;cards;&lt;BR /&gt;101,4/1/2013,&lt;BR /&gt;101,8/22/2013,&lt;BR /&gt;101,11/10/2013,&lt;BR /&gt;101,,6/18/2013&lt;BR /&gt;102,2/11/2013,&lt;BR /&gt;102,8/14/2013,&lt;BR /&gt;102,12/23/2013,&lt;BR /&gt;102,,2/4/2014&lt;BR /&gt;203,6/21/2013,&lt;BR /&gt;203,,2/5/2013&lt;BR /&gt;;&lt;BR /&gt;&lt;BR /&gt;proc sort data=have;by pid test_date dz_date;&lt;BR /&gt;&lt;BR /&gt;data prep;&lt;BR /&gt;set have;&lt;BR /&gt;by pid;&lt;BR /&gt;retain date;&lt;BR /&gt;if not missing(dz_date) then date = dz_date;&lt;BR /&gt;test = abs(intck('month',test_date,date));&lt;BR /&gt;drop date;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select distinct pid,&lt;BR /&gt;case&lt;BR /&gt;when min_test &amp;lt; 4 then '1'&lt;BR /&gt;else '0'&lt;BR /&gt;end as BiVar from(&lt;BR /&gt;select *,min(test) as min_test&lt;BR /&gt;from prep&lt;BR /&gt;group by pid);&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 15:59:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229735#M268005</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-10-13T15:59:31Z</dc:date>
    </item>
    <item>
      <title>Re: Help: creating a new variable by comparing dates with multi-observations per person</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229737#M268006</link>
      <description>&lt;P&gt;First a note on data structure, the data set is not normalized. I don't know the consequences in this case, but usually it makes life easier if data is stored in a consistent way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Assuming that the data is sorted by pid and test date.&lt;/P&gt;&lt;P&gt;Then use data step, set, by, and use retain on test date so you can compare with the dz_date.&lt;/P&gt;&lt;P&gt;Also assuming the flag is needed on the dz_date record alone.&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 16:03:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229737#M268006</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2015-10-13T16:03:44Z</dc:date>
    </item>
    <item>
      <title>Re: Help: creating a new variable by comparing dates with multi-observations per person</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229740#M268007</link>
      <description>&lt;P&gt;Also, my solution assumes there is a dz_date.&lt;/P&gt;</description>
      <pubDate>Tue, 13 Oct 2015 16:18:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-creating-a-new-variable-by-comparing-dates-with-multi/m-p/229740#M268007</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-10-13T16:18:07Z</dc:date>
    </item>
  </channel>
</rss>

