How would you code a merge that will keep only the
observations that have matches from both sets.
Answers were Sorted based on User's Feedback
Answer / nishant
Using "IN" variable option. Look at the following example.
data three;
merge one(in=x) two(in=y);
by id;
if x=1 and y=1;
run;
| Is This Answer Correct ? | 13 Yes | 1 No |
Answer / pallavi
data three;
merge one(in=x) two(in=y);
by id;
if x and y;
run;
| Is This Answer Correct ? | 13 Yes | 1 No |
Answer / madhavi
proc sort data=one;
by id;
run;
proc sort data=two;
by id;
run;
data comm_rec;
merge one(in=a) two(in=b);
by id;
if a and b;
run;
proc print data=comm_rec;
run;
| Is This Answer Correct ? | 11 Yes | 0 No |
Answer / sheetal
Using joins in proc sql statement, see following example
proc sql;
select *
from a, b
where a.case_id = b.case_id;
quit;
| Is This Answer Correct ? | 6 Yes | 1 No |
Answer / kamudu
here we used simple answer ia
data merge;
merge(tables------);
by (same colum);
if e1 and e2 then
output;
keep-----;
run;
| Is This Answer Correct ? | 0 Yes | 5 No |
explain the difference between alternate key, business key, foreign key, generated key, primary key, retained key and surrogate key ? : Sas-di
How experienced are you with customized reporting and use of Data _Null_ features?
Describe the ways in which you can create a macro variable?
What are the features of base sas system?
How do dates work in sas?
What is a macro routine?
is QUALCOMM using SAS ?
how does sas know on which server the piece of code to be executed ? say if a proc olap code is written then how the sas application would detect on which server to execute.
what are scrubing procedures in SAS?
data data1; input dt account; format dt date9.; cards; 1745 1230 1756 1120 1788 1130 1767 1240 ; data data2; input startdt enddt total; format startdt date9. enddt date9.; cards; 1657 1834 12300 1557 1758 16800 1789 1789 12300 1788 1345 12383 1899 1899 13250 ; proc sql; create table data3 as select * from data1 as x left join data2 as y on x.dt>=y.startdt and x.dt<=y.enddt; quit; Here, we are getting cartision product. But,I want left join report consisting of this program. It should not get duplicate values. you can modify the program also.
data study; input Subj : $3. Group : $1. Dose : $4. Weight : $8. Subgroup; x= input(Weight,5.1); datalines; 001 A Low 220 2 002 A High 90 1 003 B Low 193.6 1 004 B High 165 2 005 A Low 123.4 1 ; Why does X get truncated? X shows up as 22 instead of 220,9 instead of 90 and 19.8 instead of 198? This problem doesnt happen with the values 193.6 and 123.4. This does not happen if x is read on the 5. informat instead of the 5.1 informat
Have you ever used the SAS Debugger?