Hi, I have a variable X with the sequence of number such as: 3, 4, 6, 5, 4, 7, 9, 7, 8, 9, 10. I need to create a new variable Y so that Yi=max(Xi, Yi-1). It would become a sequence like: 3, 4, 6, 6, 6, 7, 9, 9, 9, 9, 10. How can I do the programming to get this new variable? Thank you so much for your suggestion.
Hi @hansmuller
I am thinking about something like this, using the RETAIN function:
data want;
set have;
retain y;
if x >= y then y=x;
run;
Hi @hansmuller,
Apply the RETAIN statement to y:
data have;
infile cards dsd;
input x @@;
cards;
3, 4, 6, 5, 4, 7, 9, 7, 8, 9, 10
;
data want;
set have;
y=max(x,y);
retain y;
run;
Hi @hansmuller
I am thinking about something like this, using the RETAIN function:
data want;
set have;
retain y;
if x >= y then y=x;
run;
Alternatively with ifn and retain
data want;
set have;
retain new;
new=ifn(x<new,new,x);
run;
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
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.
Ready to level-up your skills? Choose your own adventure.