Hi There,
I am having set of variables (trt01 - trt07) having character values , i need to find maximum non missing treatment from 7 treatments group.i need to use that last 2 digit number in a macro variable.
trt01 trt02 trt03 trt04
1 abc def -----------> trt03
2 abc -----------> trt01
3 abc def ght dsa ------------> trt04
any one help me please.
Hi There,
I am having set of variables (trt01 - trt07) having character values , i need to find maximum non missing treatment from 7 treatments group.i need to use that last 2 digit number in a macro variable.
trt01 trt02 trt03 trt04
1 abc def -----------> trt03
2 abc -----------> trt01
3 abc def ght dsa ------------> trt04
instead of writing group of if then else statement any other dynamic way to find treatment ,any one help me please.
data d2;
set d1
array trt(7) $12.;
array trt_n(7);
do i = 1 to dim(trt);
trt_n(i)= ^missing(trt(i));
x = max(reverse(substr(cmtrt_atcn(i),1,2)));
L_trt = trt||x;
end;
run;
@vikram_e wrote:Hi There,
I am having set of variables (trt01 - trt07) having character values , i need to find maximum non missing treatment from 7 treatments group.i need to use that last 2 digit number in a macro variable.
trt01 trt02 trt03 trt04
1 abc def -----------> trt03
2 abc -----------> trt01
3 abc def ght dsa ------------> trt04
any one help me please.
Can you explain what should be stored in the macro-variable after all obs have been processed?
To find the last treatment use an array and a loop with decreasing index variable.Something like (untested code😞
array t trt01-trt04;
do i = dim(t) to 1 by -1;
if not missing(t[i]) then do;
max = vname(t[i]);
leave;
end;
end;
data x;
infile cards missover;
input id (trt01-trt07) ($);
cards;
1 abc . def
2 abc
3 abc def ght dsa
;;;;
run;
data x2;
set x;
array _trt[*] trt07-trt01;
i = whichC(coalesceC(of _trt[*]),of _trt[*]);
maxtrt = vname(_trt[i]);
drop i;
run;
proc print;
run;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.