It really helps to provide examples from data from both sets.
Here is one way that includes creating two small data sets that the code can test on.
data dataseta;
input site $;
datalines;
abc
pdq
x34
;
data datasetb;
input site $;
datalines;
abc
x34
ggg
;
proc sql;
create table InA as
select a.site, ( a.site=b.site) as matched
from (select distinct site from dataseta ) as a
left join
(select distinct site from datasetb) as b
on a.site=b.site
;
quit;
Obviously I don't have your data. If your "site" variable name is different in the two sets replace the name for all the places the variable is used. The A. and B. (the DOT is important) is an SQL alias that allows you to not repeatedly type a longer data set name, tells the procedure which contributing table has the variable, and is pretty much required if your datasets are in permanent libraries as lib.datset.variable will generate syntax errors.
The subquery with the "select distinct" creates sets with only one of each value for comparison. The Left Join says "all the values from the A (or left referenced set) will be included in the output. The ON sets the condition to match things, in this case the equality of the sites. The Select with the (a.site=b.site) as matched uses the property that SAS will use 1 for true/0 for false in results of logic. Where the values don't match, the B set doesn't have the site, the result is False.