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 some problems you might encounter in processing missing values? In Data steps? Arithmetic? Comparisons? Functions? Classifying data?
Explain what is data step?
is data integration and etl programming is same? : Sas-di
Describe the ways in which you can create macro variables?
what is the purpose of _error_? : Sas programming
Intern stastical programmer written test
What are the automatic variables for macro? : sas-macro
what is program data vector? : Sas-administrator
What is the difference between SAS Data step and SAS PROC SQL, and which is better?
how can you improve the performance of a query, If it is excuting very slowly?
6) Explain about below automatic variables a) _N_ b) _ERROR_ c) _CHAR_ d) _NUMERIC_ e) _ALL_ f) FIRST.BY VARIABLE g) LAST.BY VARIABLE h) _NAME_ i) _TYPE_ j) _FREQ_ k) _STAT_ l) _BREAK
how to read the variables in sas? : Sas-administrator