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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.