<?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 to merge two datasets by the equal or the next closest dates? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800711#M315038</link>
    <description>&lt;P&gt;Just posted a corrected version &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 07 Mar 2022 17:58:59 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2022-03-07T17:58:59Z</dc:date>
    <item>
      <title>How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800535#M314951</link>
      <description>&lt;P&gt;Hi, all,&amp;nbsp;&lt;/P&gt;&lt;P&gt;Greetings, and nice to meet you again.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to merge two datasets. One is a very large mega data of US daily stock returns. The other is a much smaller data containing only important event days for firms.&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I am testing is how a firm's single-day events impact her post-event stock returns on a daily basis. So, by this merging, I am attaching a dummy variable indicating event days to the mega data of daily stock returns.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have two following datasets:&amp;nbsp;&lt;/P&gt;&lt;P&gt;(1)&amp;nbsp;US daily stock returns&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CUSIP&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/17/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/20/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/21/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/22/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/23/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/24/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/27/1990&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/1/1988&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/2/1988&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/5/1988&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/6/1988&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/3/1989&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/4/1989&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/5/1989&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/6/1989&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(2)&amp;nbsp;important event days&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CUSIP&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;Event&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/23/1990&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;4/17/1992&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;7/18/1992&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;6/22/1994&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;9/21/1994&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;6/20/1995&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;12/19/1996&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/3/1988&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;1/17/1989&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/5/1989&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;7/11/1990&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;10/11/1995&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(3) And, what I want to obtain is as follows:&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CUSIP&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;Event&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/17/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/20/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/21/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/22/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/23/1990&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/24/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00002130&lt;/TD&gt;&lt;TD&gt;8/27/1990&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/1/1988&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/2/1988&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/5/1988&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;3/6/1988&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/3/1989&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/4/1989&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/5/1989&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;00020910&lt;/TD&gt;&lt;TD&gt;4/6/1989&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;….........&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;From the two base datasets (1) and (2), most event days correspond to daily stock returns.&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, there are cases in which, like Cusip 00020910's event on 3/3/1988, the event day does not have its corresponding day of stock returns.&amp;nbsp;&lt;/P&gt;&lt;P&gt;In this case, I want to attach the dummy's value = 1 to the very next observation from the daily stock returns, that is, 3/5/1988. Once again, since I am testing the post-event impact on stock returns, the event dummy should be attached to the NEXT closest observation (i.e., stock returns).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I looked up SAS community posts to figure out how to do this. The best I could find was to use proc sql, by applying On a.cusip=b.cusip where b.date &amp;lt;= a.date group by a.cusip&lt;BR /&gt;having abs(a.date-b.date)=min(abs(a.date-b.date)) order by a.cusip, b.date;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, it didn't work. Please help!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sincerely,&amp;nbsp;&lt;/P&gt;&lt;P&gt;KS -,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 03:08:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800535#M314951</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-07T03:08:50Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800577#M314980</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/365070"&gt;@KS99&lt;/a&gt;&amp;nbsp;How large is your 'very large' data?&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 07:29:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800577#M314980</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-03-07T07:29:40Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800578#M314981</link>
      <description>&lt;P&gt;It is daily stock returns of NYSE and other markets over 1986 to 2020.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Has more than 40,000,000 obs. So, I divided them into four subsets to do the task in SAS.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 07:43:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800578#M314981</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-07T07:43:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800580#M314982</link>
      <description>&lt;P&gt;Do not divide your data into smaller portions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try something like this. Should scale well.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Feel free to ask&amp;nbsp; &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have1;
input CUSIP $ DATE : mmddyy10.;
format DATE mmddyy10.;
datalines;
00002130 8/17/1990 
00002130 8/20/1990 
00002130 8/21/1990 
00002130 8/22/1990 
00002130 8/23/1990 
00002130 8/24/1990 
00002130 8/27/1990 
00020910 3/1/1988  
00020910 3/2/1988  
00020910 3/5/1988  
00020910 3/6/1988  
00020910 4/3/1989  
00020910 4/4/1989  
00020910 4/5/1989  
00020910 4/6/1989  
;

data have2;
input CUSIP $ date :mmddyy10. Event;
format DATE mmddyy10.;
datalines;
00002130 8/23/1990  1 
00002130 4/17/1992  1 
00002130 7/18/1992  1 
00002130 6/22/1994  1 
00002130 9/21/1994  1 
00002130 6/20/1995  1 
00002130 12/19/1996 1 
00020910 3/3/1988   1 
00020910 1/17/1989  1 
00020910 4/5/1989   1 
00020910 7/11/1990  1 
00020910 10/11/1995 1 
;


data want(drop = c d rc);
   
   if _N_ = 1 then do;
      dcl hash h(dataset : 'have2(rename = (cusip = c date = d)', ordered : 'Y');
      h.definekey('c', 'd');
	  h.definedone();
	  dcl hiter i('h');
   end;

   set have1;
   c = '        ';
   d = .;

   if h.check(key : cusip, key : date) = 0 then do;
      pd = date;
	  h.remove(key : cusip, key : date);
   end;

   else do;
      h.add(key : cusip, key : date, data : cusip, data : date);

      if i.setcur(key : cusip, key : date) = 0 then
         if i.prev() = 0 &amp;amp; cusip = c then do;
            pd = d;
			rc = i.last();
			rc = i.next();
            h.remove(key : cusip, key : pd);
      end;

      h.remove(key : cusip, key : date);
   end;

   event = pd &amp;gt; .;

   format pd mmddyy10.;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Result:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;CUSIP     DATE        pd          event 
00002130  08/17/1990  .           0 
00002130  08/20/1990  .           0 
00002130  08/21/1990  .           0 
00002130  08/22/1990  .           0 
00002130  08/23/1990  08/23/1990  1 
00002130  08/24/1990  .           0 
00002130  08/27/1990  .           0 
00020910  03/01/1988  .           0 
00020910  03/02/1988  .           0 
00020910  03/05/1988  03/03/1988  1 
00020910  03/06/1988  .           0 
00020910  04/03/1989  01/17/1989  1 
00020910  04/04/1989  .           0 
00020910  04/05/1989  04/05/1989  1 
00020910  04/06/1989  .           0 
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 08:08:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800580#M314982</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-03-07T08:08:25Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800680#M315026</link>
      <description>&lt;P&gt;Dear Peter,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Wow! Thank you! It works wonderfully.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;By the way, Peter, I found my own fault in explaining my desired results.&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;00020910  04/03/1989  01/17/1989  1 &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;The results your codes produced have such a row. But I want the stock date and event date to be no more than, say, 5 days. What should I add to your codes?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Many many thanks in advance!!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sincerely,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;KS Choi -,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 16:00:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800680#M315026</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-07T16:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800709#M315036</link>
      <description>&lt;P&gt;Oh, no worries, Peter.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I figured it out.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATE - pd &amp;gt; 5 then delete or something something,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 17:57:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800709#M315036</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-07T17:57:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800710#M315037</link>
      <description>&lt;P&gt;A very small correction:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop = c d rc);
   
   if _N_ = 1 then do;
      dcl hash h(dataset : 'have2(rename = (cusip = c date = d)', ordered : 'Y');
      h.definekey('c', 'd');
	  h.definedone();
	  dcl hiter i('h');
   end;

   set have1;
   c = '        ';
   d = .;

   if h.check(key : cusip, key : date) = 0 then do;
      pd = date;
	  h.remove(key : cusip, key : date);
   end;

   else do;
      h.add(key : cusip, key : date, data : cusip, data : date);

      if i.setcur(key : cusip, key : date) = 0 then
         if i.prev() = 0 &amp;amp; cusip = c &amp;amp; date - d &amp;lt;= 5 then do;
            pd = d;
			rc = i.last();
			rc = i.next();
            h.remove(key : cusip, key : pd);
      end;

      h.remove(key : cusip, key : date);
   end;

   event = pd &amp;gt; .;

   format pd mmddyy10.;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Result:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;CUSIP     DATE        pd          event 
00002130  08/17/1990  .           0 
00002130  08/20/1990  .           0 
00002130  08/21/1990  .           0 
00002130  08/22/1990  .           0 
00002130  08/23/1990  08/23/1990  1 
00002130  08/24/1990  .           0 
00002130  08/27/1990  .           0 
00020910  03/01/1988  .           0 
00020910  03/02/1988  .           0 
00020910  03/05/1988  03/03/1988  1 
00020910  03/06/1988  .           0 
00020910  04/03/1989  .           0 
00020910  04/04/1989  .           0 
00020910  04/05/1989  04/05/1989  1 
00020910  04/06/1989  .           0 &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 17:59:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800710#M315037</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-03-07T17:59:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800711#M315038</link>
      <description>&lt;P&gt;Just posted a corrected version &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 17:58:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800711#M315038</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-03-07T17:58:59Z</dc:date>
    </item>
    <item>
      <title>Re: How to merge two datasets by the equal or the next closest dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800751#M315060</link>
      <description>&lt;P&gt;Hi, Peter,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you so much for your revised codes.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It works perfectly not only for this case, but also for my subsequent creations.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But soon again, I bumped into another problem.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(I posted it on Community board.) I'd appreciate your help greatly.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sincerely,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;KS -,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2022 23:32:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-merge-two-datasets-by-the-equal-or-the-next-closest-dates/m-p/800751#M315060</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-07T23:32:21Z</dc:date>
    </item>
  </channel>
</rss>

