BookmarkSubscribeRSS Feed
Sama1
Calcite | Level 5
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
5 REPLIES 5
Sama1
Calcite | Level 5
 
novinosrin
Tourmaline | Level 20

A nice home work 🙂

 

 

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;

novinosrin
Tourmaline | Level 20

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;

Sama1
Calcite | Level 5
Thank you very much 👍☺️
Reeza
Super User

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

 

CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

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
  • 5 replies
  • 2619 views
  • 1 like
  • 3 in conversation