DATA Step, Macro, Functions and more

Retain

Reply
Occasional Contributor
Posts: 7

Retain

Hi
Recently I started learning SAS , I need help with retain statement
I have the following dataset

Id xyz
A 1
A 2
A 3
A 4
B 1
B 2
B 3
B 4

I want to retain second observation in each group and reassign its value in 4th observation ..like

Id xyz
A 1
A 2
A 3
A 2
B 1
B 2
B 3
B 2

Thanks
Occasional Contributor
Posts: 7

Re: Retain

 
Super User
Posts: 2,068

Re: Retain

A nice home work Smiley Happy

 

 

data have;
input Id $ xyz;
datalines;
A 1
A 2
A 3
A 4
B 1
B 2
B 3
B 4
;

data want;
do _n_=1 by 1 until(last.id);
set have;
by id;
if _n_=2 then _t=xyz;
else if _n_=4 then xyz=_t;
output;
end;
drop _:;
run;

Super User
Posts: 2,068

Re: Retain

Posted in reply to novinosrin

Or since you desire traditional retain statement method, here you go:

 

data want;
set have;
by id;
retain _t;
if first.id then n=0;
n+1;
if n=2 then _t=xyz;
else if n=4 then xyz=_t;
drop n _t;
run;

Occasional Contributor
Posts: 7

Re: Retain

Thank you very much 👍☺️
Super User
Posts: 24,026

Re: Retain

Please mark the appropriate response (not this one) as the correct answer so that we know your question is resolved. 

 

Ask a Question
Discussion stats
  • 5 replies
  • 196 views
  • 1 like
  • 3 in conversation