Remove after second-post period obs

Accepted Solution Solved
Reply
Contributor
Posts: 29
Accepted Solution

Remove after second-post period obs

Hi,

 

I want to isolate the first pre-and post observations. 

 

For example,

 

data example;

input id year event;

datalines;

a 1990 0

a 1991 0

a 1992 0

a 1993 1

a 1994 0 

a 1995 0

a 1996 1

a 1997 0

b 1993 0

b 1994 0

b 1995 1

b 1996 0

b 1997 1

b 1998 0

b 1999 0

;

run;

 

I want to get this dataset. like..

 

data hope;

input id year event;

datalines;

a 1990 0

a 1991 0

a 1992 0

a 1993 1

a 1994 0 

a 1995 0

 

b 1993 0

b 1994 0

b 1995 1

b 1996 0

 

;

run;

 

please help!


Accepted Solutions
Solution
‎04-14-2018 02:07 PM
PROC Star
Posts: 1,283

Re: Remove after second-post period obs

Something like this?

 

data want(drop=flag);
   set example;
   by id;
   if first.id then flag=0;
   if event=1 then flag+1;
   retain flag;
   if flag<2;
run;

View solution in original post


All Replies
PROC Star
Posts: 1,283

Re: Remove after second-post period obs

I don't follow the logic here. Please be more specific.

Contributor
Posts: 29

Re: Remove after second-post period obs

Each id has two events. So, I want to remove observations as of the second event year by id.
Solution
‎04-14-2018 02:07 PM
PROC Star
Posts: 1,283

Re: Remove after second-post period obs

Something like this?

 

data want(drop=flag);
   set example;
   by id;
   if first.id then flag=0;
   if event=1 then flag+1;
   retain flag;
   if flag<2;
run;
Contributor
Posts: 29

Re: Remove after second-post period obs

Thank you!
PROC Star
Posts: 1,283

Re: Remove after second-post period obs

No problem Smiley Happy

PROC Star
Posts: 1,833

Re: Remove after second-post period obs

data example;

input id $ year event;

datalines;
a 1990 0
a 1991 0
a 1992 0
a 1993 1
a 1994 0 
a 1995 0
a 1996 1
a 1997 0
b 1993 0
b 1994 0
b 1995 1
b 1996 0
b 1997 1
b 1998 0
b 1999 0
;

run;

data want;
call missing(_e,__e);
do until(last.id);
set example;
by id year;
if  event and not _e then _e=1;
else if event and _e then __e=1;
if not __e then output;
end;
drop _:;
run;
☑ This topic is solved.

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

Discussion stats
  • 6 replies
  • 166 views
  • 0 likes
  • 3 in conversation