DATA Step, Macro, Functions and more

Merge that Keeps the Smaller Dataset Structure

Accepted Solution Solved
Reply
Super Contributor
Posts: 497
Accepted Solution

Merge that Keeps the Smaller Dataset Structure

Is there a merge function that combines columns from two datasets while only updating the smaller dataset with the first value of the larger dataset?

 

E.g. Dataset 1

A

B

 

Dataset 2

A orange

A blue

B pink

 

Result dataset

A orange

B pink


Accepted Solutions
Solution
‎05-10-2017 02:11 PM
Super User
Posts: 11,343

Re: Merge that Keeps the Smaller Dataset Structure

Posted in reply to DavidPhillips2

This generates the desired result. I won't promise it is extensible for all cases.

 

 

data work.data1;
   input a $;
datalines;
A
B
;
run;
data work.data2;
   input a $ color $;
datalines;
A orange
A blue
B pink
;
run;

data work.try;
   merge work.data1 work.data2;
   by a;
   if first.a;
run;

View solution in original post


All Replies
Solution
‎05-10-2017 02:11 PM
Super User
Posts: 11,343

Re: Merge that Keeps the Smaller Dataset Structure

Posted in reply to DavidPhillips2

This generates the desired result. I won't promise it is extensible for all cases.

 

 

data work.data1;
   input a $;
datalines;
A
B
;
run;
data work.data2;
   input a $ color $;
datalines;
A orange
A blue
B pink
;
run;

data work.try;
   merge work.data1 work.data2;
   by a;
   if first.a;
run;
Super Contributor
Posts: 497

Re: Merge that Keeps the Smaller Dataset Structure

Ballardw,

 

Thanks I forgot about first dot.  Happy letters and colors pair up now.

PROC Star
Posts: 765

Re: Merge that Keeps the Smaller Dataset Structure

Posted in reply to DavidPhillips2

Not sure if this is what you are asking, but this gives the desired output

 

data dataset1;
input var1 $;
datalines;
A
B
;

data dataset2;
input var1 $ var2 $;
datalines;
A orange
A blue
B pink
;

proc sort data = dataset1;
   by var1;
run;

proc sort data = dataset2;
   by var1;
run;

data want;
   merge dataset1 dataset2;
   by var1;
   if first.var1;
run;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

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