BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Marwa_Se
Obsidian | Level 7

Hello Everybody!

I have a dataset defined as bellow:

 

BANK_AGENCY           ID_Customer                Date                           Overtaking

          A                              0001                         10/02/2021                        3

          A                              0002                         12/03/2021                        3

          A                              0003                         13/04/2021                        3

          A                              0004                          25/05/2021                       3

          B                              0005                         18/01/2021                         2

          B                              0006                          25/02/2021                        2

          B                              0007                          03/06/2021                        2

Overtaking is the number of rows  to delete by agency and  ordering by date

 

For simplicity, I would like to get this result:

 

BANK_AGENCY           ID_Customer                Date                           Overtaking

          A                              0002                         12/03/2021                        3

          A                              0003                         13/04/2021                        3

          A                              0004                          25/05/2021                       3

          B                              0005                         18/01/2021                         2

 

Can you help me please ? Any suggestions are welcome 🙂

 

Thank u in advance

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User
data have;
input BANK_AGENCY $ ID_Customer $ Date :ddmmyy10. Overtaking;
format date ddmmyy10.;
datalines;
A 0001 10/02/2021 3
A 0002 12/03/2021 3
A 0003 13/04/2021 3
A 0004 25/05/2021 3
B 0005 18/01/2021 2
B 0006 25/02/2021 2
B 0007 03/06/2021 2
;

proc sort data=have;
by bank_agency date;
run;

data want;
count = 1;
do until (last.bank_agency);
  set have;
  by bank_agency;
  if count le overtaking then output;
  count + 1;
end;
drop count;
run;

I take it that your expected result misses an observation for bank_agency = "B".

View solution in original post

3 REPLIES 3
Marwa_Se
Obsidian | Level 7

Sorry the overtaking is the rows number to keep and not to delete

Kurt_Bremser
Super User
data have;
input BANK_AGENCY $ ID_Customer $ Date :ddmmyy10. Overtaking;
format date ddmmyy10.;
datalines;
A 0001 10/02/2021 3
A 0002 12/03/2021 3
A 0003 13/04/2021 3
A 0004 25/05/2021 3
B 0005 18/01/2021 2
B 0006 25/02/2021 2
B 0007 03/06/2021 2
;

proc sort data=have;
by bank_agency date;
run;

data want;
count = 1;
do until (last.bank_agency);
  set have;
  by bank_agency;
  if count le overtaking then output;
  count + 1;
end;
drop count;
run;

I take it that your expected result misses an observation for bank_agency = "B".

Marwa_Se
Obsidian | Level 7

It works perfectly! thank you so much 🙂

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 465 views
  • 1 like
  • 2 in conversation