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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.