BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Zerg
Calcite | Level 5

Hello all,

 

I currently have a data file looks like:

 

IDYearVar A
120000
120010
120021
120030
220000
220011
220021
220031
220040
320010
320020
320031
320040
320051
320060

 

What I need is excluding observations with Var A = 0 prior to the first time when Var A = 1 by the group ID. So the outcome of the data needs to look like:

 

IDYearVar A
120021
120030
220011
220021
220031
220040
320031
320040
320051
320060

 

How can I code it? Thank you.

1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20
data have;
input ID	Year	Var_A;
datalines;
1	2000	0
1	2001	0
1	2002	1
1	2003	0
2	2000	0
2	2001	1
2	2002	1
2	2003	1
2	2004	0
3	2001	0
3	2002	0
3	2003	1
3	2004	0
3	2005	1
3	2006	0
;

data want;
__k=0;
do until(last.id);
set have;
by id;
if Var_A=1 then __k=1;
if __k then output;
end;
drop _:;
run;

View solution in original post

2 REPLIES 2
novinosrin
Tourmaline | Level 20
data have;
input ID	Year	Var_A;
datalines;
1	2000	0
1	2001	0
1	2002	1
1	2003	0
2	2000	0
2	2001	1
2	2002	1
2	2003	1
2	2004	0
3	2001	0
3	2002	0
3	2003	1
3	2004	0
3	2005	1
3	2006	0
;

data want;
__k=0;
do until(last.id);
set have;
by id;
if Var_A=1 then __k=1;
if __k then output;
end;
drop _:;
run;
Zerg
Calcite | Level 5
Thank you . It works perfectly. 🙂

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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