BookmarkSubscribeRSS Feed
DathanMD
Obsidian | Level 7

Hello Colleagues, I am new to SAS and I would like help with some data manipulation from someone here.

 

Question: I have data as shown below,I would like to select rows where a given id has “manager” appearing for the first time in the job category (for that id).

Data I have:

id

Start_date

End-date

JOB

1

12JUN2015

14JUN2016

CHEF

1

14JUN2016

15JUN2016

MANAGER

1

15JUN2016

17JAN2018

DRIVER

1

18JAN2015

19JAN2018

ADMIN

1

19JAN2018

19OCT2019

MANAGER

2

12JUN2015

14JUN2016

CHEF

2

14JUN2016

15JUN2016

MANAGER

2

15JUN2016

17JAN2018

MANAGER

3

18JAN2015

19JAN2018

ADMIN

3

19JAN2018

19OCT2019

MANAGER

4

12JUN2015

14JUN2016

CHEF

 

Data that I want

id

Start_date

End-date

JOB

1

14JUN2016

15JUN2016

MANAGER

2

14JUN2016

15JUN2016

MANAGER

3

19JAN2018

19OCT2019

MANAGER

 

 

 

Thanks

 

Dathan Byonanebye

3 REPLIES 3
ed_sas_member
Meteorite | Level 14

Hi @DathanMD 

 

Here is a way to achieve this :

 

proc sort data=have out=have_sorted;
by id job start_date;
run;
 
data want;
set have_sorted;
by id job start_date;
if first.job and job=‘MANAGER’ then output;
run;
novinosrin
Tourmaline | Level 20

Hi @DathanMD 


data have;
input id (Start_date End_date)(:date9.) JOB $;
format Start_date End_date date9.;
cards;
1
12JUN2015
14JUN2016
CHEF
1
14JUN2016
15JUN2016
MANAGER
1
15JUN2016
17JAN2018
DRIVER
1
18JAN2015
19JAN2018
ADMIN
1
19JAN2018
19OCT2019
MANAGER
2
12JUN2015
14JUN2016
CHEF
2
14JUN2016
15JUN2016
MANAGER
2
15JUN2016
17JAN2018
MANAGER
3
18JAN2015
19JAN2018
ADMIN
3
19JAN2018
19OCT2019
MANAGER
4
12JUN2015
14JUN2016
CHEF
;

proc sql;
create table want(drop=t) as 
select *, job='MANAGER' as t
from have
group by id,t
having t and min(start_date)=start_date;
quit;

/*or just*/

proc sql;
create table want as 
select *
from have
where job='MANAGER'
group by id
having min(start_date)=start_date;
quit;

 

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 1061 views
  • 4 likes
  • 4 in conversation