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;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: