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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.