BookmarkSubscribeRSS Feed
Q1983
Lapis Lazuli | Level 10

data have;

input id Cd $ flg $ DATE1 DATE9. ;

format date1 date9.;

datalines;

 

11 chg b 13apr2019

11 chg i 11apr2019

12 chg e 6may2017

13 chg b 5jun2019

14 add d 4mar2019

14 chg y 1jan2019

;run;

 

I want to eliminate all rows where the number of rows per id is more than 1.  So In this example I would eliminate 11 and 14 and only keep 12 and 13.  Using a proc sort nodupkey would not work in this case.

 

3 REPLIES 3
Tom
Super User Tom
Super User

So only keep the IDs that do NOT have multiple rows?

data want;
  set have;
  by id;
  if first.id and last.id;
run;
novinosrin
Tourmaline | Level 20

data have;

input id Cd $ flg $ DATE1 DATE9. ;

format date1 date9.;

datalines;
11 chg b 13apr2019
11 chg i 11apr2019
12 chg e 6may2017
13 chg b 5jun2019
14 add d 4mar2019
14 chg y 1jan2019
;

proc sort data=have nouniquekeys uniqueout=singles ;
by id;
run;
Reeza
Super User
You want the NOUNIQUEKEY option with the UNIQUEOUT option within PROC SORT.

proc sort data=have nouniquekey uniqueout=want;
by id;
run;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 901 views
  • 5 likes
  • 4 in conversation