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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.