BookmarkSubscribeRSS Feed
mmehr3
Calcite | Level 5

I have two SAS datasets that I wish to merge and get the resultant data as in dataset3 below:

Dataset1(Sorted on URN)

URNPost_DatePay_amount
12110-Mar-15100
12113-Mar-15100

Dataset 2(Sorted on URN)

URNTrans_DatePay_Amount
12111-Mar-15100
12114-Mar-15100

Dataset3(Resultant Dataset)

URNTrans_DatePay_AmountPost_Date
12111-Mar-1510010-Mar-15
12114-Mar-1510013-Mar-15

The Post date field in Dataset 1 would always be less then or equal to the transdate field in datset 2 but the way I want the the resultant dataset is that the closest Trans_dt value(to the post date) should be combined, like in the resulatnt dataset above the observation in dataset1 with Post_date 10-Mar-15 should be merged with the observation with trans_dt 11-Mar-15 from dataset 2 and NOT with the observation with Trans_dt 14-Mar-15.

PS: the gap between post_date from dataset 1 and trans_date in dataset2 can be anything between 0 to 7 days.

Thanks.

3 REPLIES 3
ballardw
Super User

Are there ever different numbers of records for combinations of URN Trans_date and Post_date? For example do you ever have a Trans_date without a post date? or Vice versa?

Are trans_dates ever duplicated for the same URN? How about Post_date?

mmehr3
Calcite | Level 5

Yes,there can be different number of records for a combination of URN ,trans_date and post_date.for example a URN may make a payment on march 4th which would make the trans_date as 4-Mar-15,the payment gets posted(or realised) on the system on 5-Mar-15 resulting in a post date of 5th march.

A URN may also make multiple payments of same or different amounts on the same date resulting in trans_dates and post_dates getting duplicated for a URN

The trans_date and post_date fields can never be blank for a URN who has made a payment

Ksharp
Super User

The same question as other's .



 
 
data data1 ;
input urn                       Post_date   : date9.        pay_amount ;
format      Post_date date9.;
cards;
      121                                  10mar2015               100
      121                                 13mar2015               100
;
run;
 
data key;
input urn                       Trans_date    : date9.         pay_amount ;
format Trans_date date9.;
cards;
      121                                  11mar2015               100
      121                                 14mar2015               100
;
run;
 
 
 
 
data want;
set data1(rename=(Post_date=days)) key(rename=(Trans_date=days) in=inb);
by urn days;
v=lag(urn);d=lag(days);i=lag(pay_amount);
if inb and not lag(inb) and urn=lag(urn) ;
format       d date9.;
drop urn  pay_amount;
run;

Xia Keshan

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 813 views
  • 0 likes
  • 3 in conversation