Hello,
data ds1;
input var1 var2 var3 var4 var5;
datalines;
1 2 3 4 5
6 7 8 9 10
;
run;
data ds2;
input var1 var2 var3 var4 var5;
datalines;
11 12 13 14 15
1 2 3 4 5
;
run;
data want [[common observation from ds1 & ds2, with their source table] ] should be look like :
var1 var2 var3 var4 var5 DS_Name
1 2 3 4 5 ds1
1 2 3 4 5 ds2
Thanks in advance.
data ds1;
input var1 var2 var3 var4 var5;
datalines;
1 2 3 4 5
6 7 8 9 10
;
data ds2;
input var1 var2 var3 var4 var5;
datalines;
11 12 13 14 15
1 2 3 4 5
;
proc sort data = ds1;
by var1-var5;
run;
proc sort data = ds2;
by var1-var5;
run;
%let d1 = ds1;
%let d2 = ds2;
data want;
merge &d1(in=in1) &d2(in=in2);
by var1-var5;
if in1 & in2 then do;
DS_NAME = "&d1"; output;
DS_NAME = "&d2"; output;
end;
run;
What is the purpose of DS_NAME and having the same observation twice, but with a different DS_NAME, that you already know, since you provided the datasets yourself?
I want to show duplicate records with their source_name
data ds1;
input var1 var2 var3 var4 var5;
datalines;
1 2 3 4 5
6 7 8 9 10
;
data ds2;
input var1 var2 var3 var4 var5;
datalines;
11 12 13 14 15
1 2 3 4 5
;
proc sort data = ds1;
by var1-var5;
run;
proc sort data = ds2;
by var1-var5;
run;
%let d1 = ds1;
%let d2 = ds2;
data want;
merge &d1(in=in1) &d2(in=in2);
by var1-var5;
if in1 & in2 then do;
DS_NAME = "&d1"; output;
DS_NAME = "&d2"; output;
end;
run;
If I want duplicate based on var1-var4, then var5 is coming from second dataset only.. is there any way to get correct value :
output is coming like(var5 is coming from ds2 in both the dataset,which should 6 in first observation) :
SAS Output
1 | 2 | 3 | 4 | 7 | ds1 |
1 | 2 | 3 | 4 | 7 | ds2 |
data ds1;
input var1 var2 var3 var4 var5;
datalines;
1 2 3 4 6
6 7 8 9 10
;
data ds2;
input var1 var2 var3 var4 var5;
datalines;
11 12 13 14 15
1 2 3 4 7
;
proc sort data = ds1;
by var1-var4;
run;
proc sort data = ds2;
by var1-var4;
run;
%let d1 = ds1;
%let d2 = ds2;
data want;
merge &d1(in=in1) &d2(in=in2);
by var1-var4;
if in1 & in2 then do;
DS_NAME = "&d1"; output;
DS_NAME = "&d2"; output;
end;
run;
proc print data=want;
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.