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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
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.