Hello
For each customer have 6 rows with information of 6 months on wealth and obligo.
Target-
to calculate for each customer which month (1/2/3/4/5/6) provide max wealth
to calculate for each customer which month (1/2/3/4/5/6) provide max obligo
what is the way to create wanted data set from have data set?
note- IF multiple months have max value then the max month will be the earliest
data have;
input CustID YYYYMM month wealth obligo;
cards;
1111 202401 1 100 20
1111 202402 2 140 80
1111 202403 3 180 15
1111 202404 4 110 12
1111 202405 5 100 12
1111 202406 6 130 10
2222 202401 1 300 13
2222 202402 2 140 14
2222 202403 3 180 15
2222 202404 4 110 12
2222 202405 5 100 40
2222 202406 6 130 10
3333 202401 1 300 10
3333 202402 2 140 14
3333 202403 3 180 15
3333 202404 4 110 40
3333 202405 5 100 40
3333 202406 6 300 10
;
Run;
data wanted;
input CustID month_max_wealth month_max_obligo;
cards;
1111 3 2
2222 1 5
3333 1 4
;
Run;
PROC SUMMARY is the way
proc summary data=have nway;
class custid;
var wealth obligo;
output out=want maxid(wealth(month) obligo(month))=max_wealth max_obligo;
run;
And Maxim 14!
data have;
input CustID YYYYMM $ month wealth obligo;
cards;
1111 202401 1 100 20
1111 202402 2 140 80
1111 202403 3 180 15
1111 202404 4 110 12
1111 202405 5 100 12
1111 202406 6 130 10
2222 202401 1 300 13
2222 202402 2 140 14
2222 202403 3 180 15
2222 202404 4 110 12
2222 202405 5 100 40
2222 202406 6 130 10
3333 202401 1 300 10
3333 202402 2 140 14
3333 202403 3 180 15
3333 202404 4 110 40
3333 202405 5 100 40
3333 202406 6 300 10
;
Run;
data want;
do until(last.CustID);
set have;
by CustID;
if wealth>max_wealth then do;month_max_wealth=month;max_wealth=wealth;end;
if obligo>max_obligo then do;month_max_obligo=month;max_obligo=obligo;end;
end;
keep CustID max_: month_:;
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.