Hi guys! I have a variable named 'becog,' and its value is 'second complete remission /third complete remission.' In the final output, I need to change them to '2nd' and '3rd.' So, I used the following format: proc format;
value $remiss
"SECOND COMPLETE REMISSION"="2nd"
"THIRD COMPLETE REMISSION"="3rd";
run; Up to this point, everything is fine. Now, I need to add a row at the top in the 'becog' column as a label, and this label should be 'Current remission status.' It's quite long, so I named the column for this label 'col1' and also renamed 'becog' to 'col1' so that they can be merged. However, the problem arises because I formatted 'becog' initially. After the merge, my label is automatically truncated to three characters, similar to the format. How can I modify them to merge correctly? Here is what I want to output: that's what I get: my code: %macro con_stat1(varc= , label= );
proc freq data=ADSL noprint;
tables Trt01an *&varc / missing outpct out=&varc;
run;
proc freq data=ADSL noprint;
tables trt01an/missing out=&varc._n (drop=percent);
run;
data &varc._total1;
set &varc &varc._n;
by trt01an;
format &varc $&varc..;
run;
data &varc._total2(drop=pct_row count);
set &varc._total1;
length value $11. col1 $30.;
if &varc ne " " then do;
value=put(count,3.)|| "(" || put(pct_row,4.1)||"%)";
col1=strip(&varc);
end;
else if &varc eq " " then do;
value=put(count,3.);
col1=strip(-1);
end;
run;
proc sort data=&varc._total2;
by &varc;
run;
proc transpose data=&varc._total2
out=&varc._final1 (drop=_name_)
prefix=Trt;
by col1;
var value;
id Trt01an;
run;
data label;
length col1 $30;
col1="&label";
run;
data &varc._final2;
set label &varc._final1 ;
run;
data &varc._final3;
set &varc._final2;
if &varc=" " then label="n";
run;
%mend;
%con_stat1(varc=remiss,label=Current remission Status Score);
... View more