DATA Step, Macro, Functions and more

Removing Observations Based on Varible Value

Accepted Solution Solved
Reply
Contributor
Posts: 44
Accepted Solution

Removing Observations Based on Varible Value

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.

 


Accepted Solutions
Solution
‎02-06-2018 09:52 AM
Super User
Posts: 10,574

Re: Removing Observations Based on Varible Value

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;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code

View solution in original post


All Replies
Solution
‎02-06-2018 09:52 AM
Super User
Posts: 10,574

Re: Removing Observations Based on Varible Value

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;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Contributor
Posts: 44

Re: Removing Observations Based on Varible Value

Posted in reply to KurtBremser

yes that does it, thank you.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 119 views
  • 0 likes
  • 2 in conversation