BookmarkSubscribeRSS Feed
amulyabista
Calcite | Level 5

Hi,

 

I am trying to merge two dataset by var1 but with a lookup method rather than exact match merge. Please help

 

Data Set 1

Var1var2var3
John Doeoneyes
John Daotwono
John Laouoneyes
Laou Johntwoyes
Ram Prasad Neulaoneyes
Ram Neulatwono
Prasad Ram Neulaoneyes
Neula Ram Prasadtwoes
Ram Prasad Doeoneno
California Mayor Cityoneyes
California City Mayor Towntwoes
California Mayoroneno
California City Mayor Houseoneyes

 

Dataset 2

var1var4var5
Johnsomething1something2
Ram Prasadsomething3something4
california city mayorhelohelo2

 

Desired Dataset

Var1var2var3var4var5
John Doeoneyessomething1something2
John Daotwonosomething1something2
John Laouoneyessomething1something2
Laou Johntwoyes  
Ram Prasad NeulaoneyesSomething3something4
Ram Neulatwono  
Prasad Ram Neulaoneyes  
Neula Ram Prasadtwoes  
Ram Prasad DoeonenoSomething3something4
California Mayor Cityoneyes  
California City Mayor Towntwoeshelohelo2
California Mayoroneno  
California City Mayor Houseoneyeshelohelo2
3 REPLIES 3
art297
Opal | Level 21

You could use something like:

 

proc sql noprint;
  create table want as
    select *
      from dataset1 a
        left join dataset2 b
          on  upcase(a.var1) like catt(upcase(b.var1),'%')
  ;
quit;

Art, CEO, AnalystFinder.com

 

Ksharp
Super User

data DataSet1;
infile cards dlm='09'x;
input (Var1	var2	var3) (:$40.);
cards;
John Doe	one	yes
John Dao	two	no
John Laou	one	yes
Laou John	two	yes
Ram Prasad Neula	one	yes
Ram Neula	two	no
Prasad Ram Neula	one	yes
Neula Ram Prasad	two	es
Ram Prasad Doe	one	no
California Mayor City	one	yes
California City Mayor Town	two	es
California Mayor	one	no
California City Mayor House	one	yes
;
run;
data Dataset2;
infile cards dlm='09'x;
input (var1	var4	var5) (:$40.);
cards;
John	something1	something2
Ram Prasad	something3	something4
california city mayor	helo	helo2
;
run;
proc sql ;
  create table want as
    select a.*,var4,var5
      from dataset1 a
        left join dataset2 b
          on  prxmatch(cats('/\b',b.var1,'\b/i'),a.var1);
  ;
quit;

PGStats
Opal | Level 21

Or

 

proc sql;
create table want as
select 
	a.*,
	b.var4,
	b.var5
from 
	dataset1 as a left join 
	dataset2 as b on upcase(a.var1) eqt upcase(b.var1);
quit;
PG

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!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 713 views
  • 0 likes
  • 4 in conversation