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;
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 25. 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.