How would you code a merge that will write the matches of
both to one data set, the non-matches from the left-most
data set to a second data set, and the non-matches of the
right-most data set to a third data set.
Answers were Sorted based on User's Feedback
Answer / tangyoulei
data new1 new2 new3;
merge old1 (in=one) old2 (in=two);
if one and two then output new1;
else if one and not two then output new2;
else output new3;
run;
| Is This Answer Correct ? | 16 Yes | 0 No |
Answer / arun & g.n.rao
data one;
input ID$ NAME$;
datalines;
A01 SUE
A02 TOM
A05 KAY
A10 JIM
;
RUN;
DATA TWO;
INPUT ID$ AGE SEX$;
DATALINES;
A01 58 F
A02 20 M
A04 47 F
A10 11 M
;
RUN;
DATA N1 N2 N3;
MERGE ONE (IN=X) TWO (IN=Y);
BY ID;
IF X=1 AND Y=1 THEN OUTPUT N1;
IF X=1 AND Y=0 THEN OUTPUT N2;
IF X=0 AND Y=1 THEN OUTPUT N3;
RUN;
| Is This Answer Correct ? | 9 Yes | 1 No |
Answer / proc sql
proc sql:
proc sql;
create table sqln1 as select one.id,name,age,sex from one
inner join two on one.id=two.id;
create table sqln2 as select one.id,name,age,sex from one
left join two on one.id=two.id where two.id is null;
create table sqln3 as select two.id,name,age,sex from one
right join two on one.id=two.id where one.id is null;
quit;
| Is This Answer Correct ? | 5 Yes | 0 No |
Answer / vinod swarna
proc sql;
create table both_match as
select *
from one
intersect
select *
from two;
create table left_non as
select *
from one
except
select *
from two;
create table right_non as
select *
from two
except
select *
from one;
quit;
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / lakshmi
data data1 data2 data3;
merge left(in-a) right(in=b);
by subjid;
if a and b then output data1;
if a and not b then output data2;
if b and not a then output data3;
run;
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / vipin choudhary
Assume the common variable in both of the old datasets
is "name".
Data One two three;
merge old(in = in1) old1(in = in2);
by name;
if in1 and in2 then output one;
if in1 then output two;
if in1 = 0 and in2 = 1 then output three;
run
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / giri
this problem over come by using the joins statements
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / m.sivakumar
proc sql;
create table sqln1 as select one.id,name,age,sex from one
inner join two on one.id=two.id;
create table sqln2 as select one.id,name,age,sex from one
left join two on one.id=two.id where two.id is null;
create table sqln3 as select coalesce(one.id,two.id)as
id,name,age,sex from one right join two on one.id=two.id
where one.id is null;
quit;
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / padma
The above proc sql is not working. it is throwing up error.
Please verify. If anybody give proc sql code for the above
question that would be great.
padma
| Is This Answer Correct ? | 0 Yes | 1 No |
What are the 3 components in sas programming?
How to test the debugging in sas?
where to use sas business intelligence? : Sas-bi
what r the job openings SAS for fresher graduates !
how can you get the single data set from the library(which has the number of data sets)?
3 Answers Accenture, Deloitte,
explain about data integrator metadata reports? : Sas-di
what is the difference between floor and ceil functions in sas? : Sas-administrator
What are the difference between sas functions and procedures?
how to debug and test the sas program? : Sas-administrator
what is validvarname and varnum? why we are using this options; explain with a syntax for this options?
What is difference between Global n Local Macro Variables..?
How do you generate random samples?