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;

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
  • 773 views
  • 0 likes
  • 3 in conversation