Extracting patients based on number of observations

Solved
Frequent Contributor
Posts: 110

Extracting patients based on number of observations

Hi All,

I have a data set of patient visits. We want to extract only the patients who have at least 2 visits. How do I do this?

Have:

id      visit#

a         1

a         2

a         3

a         4

b         1

c         1

c         2

c         3

d         1

The data set I want would only include ids a and c.

Thanks!

Accepted Solutions
Solution
‎06-30-2017 10:33 AM
Super Contributor
Posts: 368

Re: Extracting patients based on number of observations

Something like this?

data test;

length id visit \$1;

input id visit;

datalines;

a 1

a 2

a 3

a 4

b 1

c 1

c 2

c 3

d 1

;

run;

proc sql;

create table sel as

select id

from test

group by id

having count(visit) > 1

;

quit;

data test1;

merge test (in=a) sel (in=b);

by id;

if a and b;

run;

//Fredrik

All Replies
Solution
‎06-30-2017 10:33 AM
Super Contributor
Posts: 368

Re: Extracting patients based on number of observations

Something like this?

data test;

length id visit \$1;

input id visit;

datalines;

a 1

a 2

a 3

a 4

b 1

c 1

c 2

c 3

d 1

;

run;

proc sql;

create table sel as

select id

from test

group by id

having count(visit) > 1

;

quit;

data test1;

merge test (in=a) sel (in=b);

by id;

if a and b;

run;

//Fredrik

Super User
Posts: 9,415

Re: Extracting patients based on number of observations

```data want;
set have;
by id;
if if first.id and last.id then delete;
run;```

Removes any records where there is only one recor per id.

Super Contributor
Posts: 368

Re: Extracting patients based on number of observations

Sweet!
Frequent Contributor
Posts: 110

Re: Extracting patients based on number of observations

I like it, but we may decide we want to include people with more observations down the line. I think I'll try FredrikE's method. Thanks!

Super Contributor
Posts: 368