BookmarkSubscribeRSS Feed
deleted_user
Not applicable
Hi,

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 );
1 REPLY 1
RichardH_sas
SAS Employee
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!

    http://support.sas.com/forums/forum.jspa?forumID=31
  • hackathon24-white-horiz.png

    The 2025 SAS Hackathon Kicks Off on June 11!

    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.

    YouTube LinkedIn

    Creating Custom Steps in SAS Studio

    Check out this tutorial series to learn how to build your own steps in SAS Studio.

    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
    • 1 reply
    • 923 views
    • 0 likes
    • 2 in conversation