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
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;
I think @DathanMD rather needs this:
data want;
set have_sorted (where=(job = 'MANAGER'));
by id job start_date;
if first.job;
run;
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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.