Is it possible to find the maximum entry in an array using max function?? The problem is that at each record, there is a different starting point in the array. e,g,
Array Bal(36) balance1-balance36;
if num > 18 then
maxbal = max(of Bal(num) - Bal(num-18), 0);
else
maxbal = max(of Bal(num) - Bal(1) , 0 );
I'm sure there are multiple good solutions here. Since the MAX function isn't too fancy, I actually found it easier to write some code that avoids using the function.
%let levels=18;
/* Setting this up as a macro variable
makes it easy to change */
data test;
set whatever;
array Bal
balance1-balance36;
MaxBal=0;
/* Create lower limit for DO loop */
if num >= &levels then
bottom = num - &levels + 1;
else bottom = 1;
/* Cycle from bottom to the value of num */
do i = bottom to num;
if Bal{i} > MaxBal then
MaxBal = Bal{i};
end;
drop i;
run;
In the future, you might have a little more luck posting to the DATA step board for responses on topics like this. No worries though!
Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.