BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sam369
Obsidian | Level 7


Hi All,

I have a question on merging when data have duplicate records on the same date. I have thousands of records. Find the sample data below

Data one;

Pid               desc            trig_date

100               xxxx              19JAN2009

100        yyyy       19jan2009

100        zzzz       17MAY2010

100        bbbb       18OCT2010

100        loss       19OCT2010

Data two;

Pid   smpdt

100   19jan2009

100   17MAY2010

100    18OCT2010

Data want;

Pid               desc            trig_date                   smpdt

100               xxxx              19JAN2009        19jan2009

100        yyyy       19jan2009

100        zzzz       17MAY2010       17MAY2010

100       bbbb      18OCT2010       18OCT2010

100        loss       19OCT2010

Thanks

Sam

1 ACCEPTED SOLUTION

Accepted Solutions
data_null__
Jade | Level 19

I'm not sure I understand the question.

data one;
   input Pid desc :$4. trig_date:date.;
  
format t: date9.;
  
cards;
100        xxxx       19JAN2009
100        yyyy       19jan2009
100        zzzz       17MAY2010
100        bbbb       18OCT2010
100        loss       19OCT2010
;;;;
   run;

Data two;
   input Pid  smpdt:date.;
  
format s: date9.;
  
cards;
100   19jan2009
100   17MAY2010
100   18OCT2010
;;;;
   run;

data new;
   merge one two(in=in2 rename=smpdt=trig_date);
   by pid trig_date;
   if in2 and  first.trig_date then smpdt=trig_date;
   format smpdt date9.;
  
run;

View solution in original post

3 REPLIES 3
data_null__
Jade | Level 19

I'm not sure I understand the question.

data one;
   input Pid desc :$4. trig_date:date.;
  
format t: date9.;
  
cards;
100        xxxx       19JAN2009
100        yyyy       19jan2009
100        zzzz       17MAY2010
100        bbbb       18OCT2010
100        loss       19OCT2010
;;;;
   run;

Data two;
   input Pid  smpdt:date.;
  
format s: date9.;
  
cards;
100   19jan2009
100   17MAY2010
100   18OCT2010
;;;;
   run;

data new;
   merge one two(in=in2 rename=smpdt=trig_date);
   by pid trig_date;
   if in2 and  first.trig_date then smpdt=trig_date;
   format smpdt date9.;
  
run;
sam369
Obsidian | Level 7

Hi Data _null_

You understand the question right. And you gave the right one. Thanks for your help.

i am using lenthy code using retain statment, because date one have few records on trigdt and data two have few records on sampdt . But i need both record in my final dataset.Now i got it with your help

Thanks

Sam


VD
Calcite | Level 5 VD
Calcite | Level 5

proc sql; create table want as select  one.*, two.smpdt from one full join two on one.trig_date=two.smpdt and one.pid=two.pid ; quit;

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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
  • 913 views
  • 0 likes
  • 3 in conversation