Hi everyone,
Because I could not find my question amng the latest ones, so I send it again. If you find it somewhere else as well, I apologize for that.
I use the following code to create a subset when the value of a variable is equal to a variable in another dataset.
proc sql;
create table want as select *
from have1
where id in(select id from have2); quit;
However, I don't want to create a subset, but I want to say id_dummy=1 if id is in have2.
I appreciate any suggestion.
If you don't have duplicates you can use a merge and check for matches.
If you have duplicates you can remove them and then use a merge and check for matches.
You could use an inline query with a CASE statement
CASE WHEN (SELECT A.NAME FROM HAVE AS _X WHERE A.NAME=_X.NAME) IS NOT NULL THEN 1
ELSE 0
Try something like this:
data a;
input id;
datalines;
1
2
3
4
5
;
data b;
input id;
datalines;
2
3
;
proc sql;
select aa.*,case when aa.id=bb.id then 1 else 0 end as id_dummy from a aa left join b bb
on aa.id=bb.id;
quit;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.