Hello,
I have a dataset of hospital admissions with multiple observations per patient. I'm looking to delete patient records based on the value of a binary variable (RANK) in the dataset. The first record for each patient should have a value 1 for RANK. If there are records within the patient ID that have a 0 before a 1 for RANK, I want to delete them. Any records within each patient id with a 0 after 1 for RANK should be kept. Here is an example of the data:
data have:
RANK ID
1 1
1 2
0 2
1 3
0 4
1 4
0 4
1 5
0 6
1 6
1 7
0 8
0 8
1 8
0 8
data want:
RANK ID
1 1
1 2
0 2
1 3
1 4
0 4
1 5
1 6
1 7
1 8
0 8
I'm not sure how to go about this -- any coding suggestions are appreciated.
Thank you.
Sort by ID and date (or whatever you got for a time series).
Do data step with
date want;
set have;
by id;
retain flag;
if first.id then flag = 0;
if rank = 1 then flag = 1;
if flag;
drop flag;
run;
Sort by ID and date (or whatever you got for a time series).
Do data step with
date want;
set have;
by id;
retain flag;
if first.id then flag = 0;
if rank = 1 then flag = 1;
if flag;
drop flag;
run;
yes that does it, thank you.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.