BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Bal23
Lapis Lazuli | Level 10

data ab2 dup;

set ab1;

by id date;

if first.date then output ab2;

else output dup;

run;

 

A patient has multiple visits and I only need to see the first vist. But with the above code, I cannot find any duplicate records.

ANy advice how to remove the same ID with later visits, that might be second, third or even more visits?

Thanks.

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

If you want one per ID then use

 

if first.id then output ab2;

else output dup;

View solution in original post

3 REPLIES 3
RW9
Diamond | Level 26 RW9
Diamond | Level 26

You haven't shown your data, but I assume from the code that each row of data has a different value in DATE variable.  Therefore when:

if first.date 

Is evaluated every row is different.  Do you not have a visit variable, i.e. VISIT 1, VISIT 2 etc. you could use that.  Or if the DATE variable is actually a datetime then use datepart() function to use only the date.  Without further information on your data I can't say.

Bal23
Lapis Lazuli | Level 10

yes each row of data has a different value in date variable

I do not have a visit variable, and date variable is a datetime,

can you provide a sas sample code as how to use datepart( )?

Thanks

ballardw
Super User

If you want one per ID then use

 

if first.id then output ab2;

else output dup;

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
  • 1309 views
  • 1 like
  • 3 in conversation