proc sql;
create table TEST_STATUS (MEMB_ID num, PAD_FLAG char(1), DECILE num, DOS_YEAR num, PROGRESSION char(6), STATUS char(8));
insert into TEST_STATUS
values(1231, 'N', 8, 2019,'STAYER',' DROPPED')
values(1231, 'N', 8, 2020,'STAYER',' DROPPED')
values(1241, 'Y', 9, 2019,'STAYER',' FOUND ')
values(1241, 'Y', 9, 2020,'STAYER',' DROPPED')
values(1251, 'N', 9, 2019,'STAYER',' FOUND ')
values(1251, 'N', 9, 2020,'STAYER',' FOUND ')
values(1261, 'N', 2, 2019,'STAYER',' DROPPED')
values(1271, 'N', 7, 2019,'STAYER',' DROPPED')
values(1271, 'N', 7, 2020,'STAYER',' DROPPED')
values(1281, 'N', 9, 2019,'STAYER',' DROPPED')
values(1281, 'N', 9, 2020,'STAYER',' DROPPED')
values(1291, 'Y', 1, 2019,'STAYER',' FOUND ')
values(1291, 'Y', 1, 2020,'STAYER',' FOUND ')
values(1211, 'Y', 8, 2019,'STAYER',' NEW ')
values(1211, 'Y', 8, 2020,'STAYER',' DROPPED')
values(1201, 'Y', 9, 2019,'STAYER',' FOUND ')
values(1201, 'Y', 9, 2020,'STAYER',' DROPPED')
values(1301, 'Y', 1, 2019,'STAYER',' FOUND ')
values(1301, 'Y', 1, 2020,'STAYER',' DROPPED')
values(1311, 'Y', 9, 2019,'STAYER',' FOUND ')
values(1311, 'Y', 9, 2020,'STAYER',' DROPPED')
values(1331, 'N', 1, 2019,'STAYER',' DROPPED')
values(1331, 'N', 1, 2020,'STAYER',' DROPPED')
;
run;
/* EXAMPLE OF LOGIC I NEED, this code does not work */
data WANT;
set TEST_STATUS;
if DOS_YEAR = 2019 and STATUS in ('NEW','FOUND') and DOS_YEAR = 2020 and STATUS in ('DROPPED') then TARGET=1; ELSE TARGET=0;
if DOS_YEAR = 2019 and STATUS = 'DROPPED' and DOS_YEAR = 2020 and STATUS = 'DROPPED' then TARGET=1; ELSE TARGET=0; run; I'm trying to find a way to weed out non targeted membership. I need to exclude members with a status of 'NEW' or 'FOUND' in 2020. I'm also trying to target members where 'DROPPED' status or 'NEW','FOUND' status was in 2019 and contained a 'DROPPED' status in 2020. When i add multiple conditions it does not work. Any help would be appreciated. It's also importan to note there are scenarios where a member only shows up for 1 year, in this case I need to target where if member status in 2019 = 'DROPPED' I need to target. These are the results i'm looking for MEMB_ID PAD_FLAG DECILE DOS_YEAR PROGRESSION STATUS TARGET 1231 N 8 2019 STAYER DROPPED 1 1231 N 8 2020 STAYER DROPPED 1 1241 Y 9 2019 STAYER FOUND 1 1241 Y 9 2020 STAYER DROPPED 1 1251 N 9 2019 STAYER FOUND 0 1251 N 9 2020 STAYER FOUND 0 1261 N 2 2019 STAYER DROPPED 1 1271 N 7 2019 STAYER DROPPED 1 1271 N 7 2020 STAYER DROPPED 1 1281 N 9 2019 STAYER DROPPED 1 1281 N 9 2020 STAYER DROPPED 1 1291 Y 1 2019 STAYER FOUND 0 1291 Y 1 2020 STAYER FOUND 0 1211 Y 8 2019 STAYER NEW 1 1211 Y 8 2020 STAYER DROPPED 1 1201 Y 9 2019 STAYER FOUND 1 1201 Y 9 2020 STAYER DROPPED 1 1301 Y 1 2019 STAYER FOUND 1 1301 Y 1 2020 STAYER DROPPED 1 1311 Y 9 2019 STAYER FOUND 1 1311 Y 9 2020 STAYER DROPPED 1 1331 N 1 2019 STAYER DROPPED 1 1331 N 1 2020 STAYER DROPPED 1
... View more