BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Kbug
Obsidian | Level 7

Hello, I am using SAS 9.4

and I am trying to compare two columns of data and make a new column that helps me identify if any data in column A is not in column B, (identified by 1=in column, 0=not in column)

 

Set: Have

 

A            B                 

Bo         Ape                    

Po          Bo                     

Ro         Cool                   

Fo         Lo                        

No         So                        

Mo         Tape                    

So          Yes                    

 

 

set: want

 

A            B                  match (is data in A in B?)

Bo         Ape                    1

Po          Bo                     0

Ro         Cool                   0

Fo         Lo                        0 

No         So                        0

Mo         Tape                    0

So          Yes                    1

 

 

So I am basing the data off of A and finding if any of A's data is found anywhere in B (refer to bolded).

How am I to go about this?

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

Something like:

 

data work.have;
input A $ B $;
datalines;
Bo Ape 
Po Bo 
Ro Cool 
Fo Lo 
No So 
Mo Tape 
So Yes 
;

proc sql;
   create table work.match as
   select a, b,a in (select distinct b from work.have) as match
   from work.have
   ;
quit;

View solution in original post

2 REPLIES 2
ballardw
Super User

Something like:

 

data work.have;
input A $ B $;
datalines;
Bo Ape 
Po Bo 
Ro Cool 
Fo Lo 
No So 
Mo Tape 
So Yes 
;

proc sql;
   create table work.match as
   select a, b,a in (select distinct b from work.have) as match
   from work.have
   ;
quit;
gamotte
Rhodochrosite | Level 12

Hello,

 

A data step solution :

 

proc sql noprint;
    SELECT nobs INTO :nobs TRIMMED
    FROM dictionary.tables
    WHERE libname="WORK" and memname="HAVE";
quit;

data want;
    array Bvals(&nobs.) $ _TEMPORARY_;
    if _N_=1 then do i=1 to &nobs.;
        set have point=i;
        Bvals(i)=B;
    end;

    set have;
    match=(A in Bvals);
run; 

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 6614 views
  • 3 likes
  • 3 in conversation