I want to keep only the duplicates where there is an identical match betwwen sport1 and sport2. So in the following table I only want to keep Person A where sport1 and Sport2 are both soccer and Person D where Sport1 and Sport2 are both Tennis
| Person | Sport1 | Sport2 |
| A | Soccer | Soccer |
| A | Soccer | Table Tennis |
| A | Soccer | Rugby |
| B | Footy | Footy |
| C | Baseball | Baseball |
| D | Tennis | Badmington |
| D | Tennis | Tennis |
data want;
set have;
if sport1 = sport2;
run;
This is called a subsetting if.
You can do it in a where condition, if you want only one entry per person:
proc sort
data=have (
where=(sport1 = sport2)
)
out=want (keep=person)
nodupkey
;
by person;
run;
data want;
set have;
if sport1 = sport2;
run;
This is called a subsetting if.
You can do it in a where condition, if you want only one entry per person:
proc sort
data=have (
where=(sport1 = sport2)
)
out=want (keep=person)
nodupkey
;
by person;
run;
To be honest. I don't understand your question. data have; input (Person Sport1 Sport2) ($); cards; A Soccer Soccer A Soccer Table Tennis A Soccer Rugby B Footy Footy C Baseball Baseball D Tennis Badmington D Tennis Tennis ; run; proc sql; select * from have group by person having sum(sport1=sport2) ne count(*) and sum(sport1=sport2) ne 0; quit;
It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.
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.
Ready to level-up your skills? Choose your own adventure.