I have a problem with the variable name split. please see screen shot below. I combine cohort and unit together. how can I split (L) to below Fmax, like(mg/kg)below Mmin. thanks a lot
currently program auto split, there should be a way to manually split.
ods escapechar='^'; proc sort data=sashelp.class out=class; by sex; run; data c1; set class; length sexf $50.; Weightln=log10(Weight); if sex='M' then do; sexf2=strip(sex)||'min'; unit='mg/kg'; end; if sex='F' then do; sexf2=strip(sex)||'max'; unit='L'; end; sexf=strip(sexf2)||' ('||strip(unit)||')'; if index(sexf, 'max') then sexf=tranwrd(sexf, 'max', '^{sub max}'); if index(sexf, 'min') then sexf=tranwrd(sexf, 'min', '^{sub min}'); run; proc sort data=c1; by sexf; PROC MEANS DATA=c1 NOPRINT; BY sexf; VAR Weight; OUTPUT OUT=AB N=N0 MEAN=Mean0 CV=CV0 STD=SD0 STDERR=SE0 LCLM=LCLM UCLM=UCLM MIN=MIN0 Q1=Q10 MEDIAN=Median0 Q3=Q30 MAX=MAX0; RUN; proc means data=c1 noprint; var Weightln; by sexf; output out=cd mean=logmean var=varlog; run; data gcd; set cd; geomean=round(exp(logmean), .001); run; proc sql; create table all as select a.*, b.geomean from AB a left join gcd b on a.sexf=b.sexf; quit; proc format; picture mnf (round) low-high='009.99'; picture sdf (round) low-high=' 009.99)' .='N/A)' (prefix='('); picture minf (round) low-high='009.99;' (prefix='['); picture maxf (round) low-high='009.99]'; run; PROC tabulate data=all ORDER=data; CLASS sexf; VAR n0 MEAN0 SD0 se0 cv0 q10 median0 q30 MIN0 MAX0 geomean; keyword mean / style=[just=R]; keyword StD / style=[just=L]; TABLE (n0='n'*max=''*f=4. mean0='Mean'*max=''*[style=[just=R cellwidth=70] f=mnf.] SD0='(SD)'*max=''*[style=[just=L cellwidth=75] f=sdf.] SE0='SE'*max=''*f=8.2 cv0='CV%'*max=''*f=8.2 Q10='Q1'*max=''*f=8.2 median0='Median'*max=''*f=8.2 Q30='Q3'*max=''*f=8.2 min0='Tmin'*max=''*f=minf. max0='Max'*max=''*f=maxf.), sexf=" " / misstext='---' box=" sex" RTS=30; RUN;
Hi:
I thought you wanted to change the value for the SEXF variable so that there was a line break after the subscript max. In the code you posted, you do this:
if index(sexf, 'max') then
sexf=tranwrd(sexf, 'max', '^{sub max}');
so you know how to use ODS ESCAPECHAR. The ways to force the line to split for that column header are either 1) make the column width narrower to force (L) to the next line -- which may not work as you expect or 2) (a more reliable option) use ODS ESCAPECHAR to insert a line break or carriage return or new line into the string.
The previous posting that someone sent you showed the use of ESCAPECHAR+n, which is the older form of the new line function. If you were going to use the newline function, it would be as shown below -- I just used SASHELP.CLASS and a format for the column headers instead of changing the variable name, but you can see the whole string you need to use to force a line break where you want:
Hope this helps,
Cynthia
Please check out this post:
I actually mean the variable name split, not the header.
Hi:
I thought you wanted to change the value for the SEXF variable so that there was a line break after the subscript max. In the code you posted, you do this:
if index(sexf, 'max') then
sexf=tranwrd(sexf, 'max', '^{sub max}');
so you know how to use ODS ESCAPECHAR. The ways to force the line to split for that column header are either 1) make the column width narrower to force (L) to the next line -- which may not work as you expect or 2) (a more reliable option) use ODS ESCAPECHAR to insert a line break or carriage return or new line into the string.
The previous posting that someone sent you showed the use of ESCAPECHAR+n, which is the older form of the new line function. If you were going to use the newline function, it would be as shown below -- I just used SASHELP.CLASS and a format for the column headers instead of changing the variable name, but you can see the whole string you need to use to force a line break where you want:
Hope this helps,
Cynthia
Cynthia, thanks a lot, it works!!!
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.
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.