DATA Step, Macro, Functions and more

Remove duplicate observations

Reply
Occasional Contributor lca
Occasional Contributor
Posts: 10

Remove duplicate observations

Hello!

SAS newbie here :-)

I have table similar to this:

ID
Version
Value
100010
100111
200020
200121
200222
200321
200420
300040
300141
300243

I want to extract data and make a new table with only unique IDs with the highest version and corresponding value.

Like this:

ID
Version
Value
100111
200420
300243

This is may be easy, but I'm new to SAS :-)

Any suggestions?


PROC Star
Posts: 7,492

Remove duplicate observations

There are a number of ways.  Here is one using proc sort.

proc sort data=have;

  by id descending version;

run;

proc sort data=have out=want nodupkey;

  by id;

run;

Occasional Contributor lca
Occasional Contributor
Posts: 10

Remove duplicate observations

Thank you, it worked Smiley Happy

PROC Star
Posts: 7,492

Remove duplicate observations

You could also do it using proc sql:

proc sql noprint;

  create table want as

     select *

       from have

         group by id

           having version eq max(version)

  ;

quit;

Frequent Contributor
Posts: 104

Remove duplicate observations

The data set also appears to be sorted by ID and Version, in which case, you can use:

proc sort data=have;   *--- only needed if not already sorted by ID and Version;

   by id version;

run;

data want;

   set have;

   by id;

   if last.id;   *--- highest version for each id due to sorting;

run;

Use which ever method you find more natural and intuitive to you.  Art's methods all work.

Ask a Question
Discussion stats
  • 4 replies
  • 148 views
  • 0 likes
  • 3 in conversation