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 |
Explain the main difference between the sas procedures and functions? : Sas-administrator
How would you code a merge that will keep only the observations that have matches from both sets.
5 Answers Accenture, Bank Of America,
how do you validate tables abd reports?
2 Answers Accenture, Quintiles,
Please, anyone, let me know the style or an example of using 'by='/'by' variable of a PDV(Program Data Vector)
3 Answers Verinon Technology Solutions,
explain about sas business intelligence? : Sas-bi
In the SAS Data step what is the difference between the subsetting done by Where and subsetting done by If?
what is the difference between sas and other datawarehousing languages?what are the advantages of sas over them?
whenever we using the merging through data set merging ,we can get note in log like this "MERGE STATEMENT HAS MORE THAN ONE ONE DATASET BY REPEATED BY VAIABLES" but the output has come in good manner,whenever in in sql(full join) we can get cartion product.so How do overcome this problem in sql?
Enlist the functions performed by sas.
How to create list output for cross-tabulations in proc freq?
What are common programming errors committed in sas
how we can create a FLAG datasets? Ex:-ID age_group no_persons 1 to 10 10 to 20 3 11 to 20 21 to 30 7 21 to 3o 31 to 40 5