SAS proc 报告 RTF table 列宽与指定宽度不对齐
SAS proc report RTF table column widths not aligning with specified widths
当使用 proc report
以 .rtf 格式生成 SAS table 时,列宽未与其指定的宽度对齐。这导致列标题占用多行,并且一些值被截断,我想避免这种情况。
使用数据:
/* Insert data */
data aaa;
input cohort $ color $ sum $ pctn $;
datalines;
group_1 dark_yellow 2 12.500%
group_2 orange 6 37.500%
group_2 dark_green 8 50.000%
overall orange 6 30.000%
overall dark_green 8 42.250%
;
run;
以及生成列宽分别为 7、11、16 和 30 的 .rtf 文件的代码:
/* Output settings */
options nocenter nodate nonumber missing=' ' orientation=landscape linesize=116 pagesize=42; * page settings;
ods output close; * close ods output;
ods rtf close; * close ods rtf;
ods listing close; * close ods listing;
footnote "Table generated on %sysfunc(date(), worddatx.w.)"; * insert date below report;
ods rtf file = "C:\Astudies\Colors.rtf" bodytitle;
/* Generate table */
proc report data=aaa nowd split='~';
column cohort color sum pctn;
define cohort /order order=data width=7 left 'Cohort';
define color /display width=11 left 'Color';
define sum /display width=16 left 'Number of colors';
define pctn /display width=30 left 'Percentage of total colors (%)';
title 'Painting';
title2'Common colours per cohort';
run;
title; * remove any titles;
footnote; * remove any footnotes;
ods rtf close; * close ods rtf;
ods listing;
这导致 table。第 3-4 列的标题跨越多行(它们的长度分别为 16 和 30 个字符)。第 2 列具有截断值,其中最大字符长度 (dark_yellow) 应为 11。
你可以在DEFINE
column/ STYLE=[]
选项中设置一个PROC REPORT
列样式width=
属性 .
示例代码
此示例假定 10 英寸的景观不动产,相对(无单位)列宽为 7、11、16 和 30。%SYSEVALF 计算将相对宽度映射到要在 ODS RTF 中使用的显式英寸渲染。
proc report data=aaa nowd split='~'
;
column cohort color sum pctn;
define cohort /order order=data left 'Cohort' style=[width=%sysevalf(10 * 7 / (7+11+16+30))in];
define color /display left 'Color' style=[width=%sysevalf(10 * 11 / (7+11+16+30))in];
define sum /display left 'Number of colors' style=[width=%sysevalf(10 * 16 / (7+11+16+30))in];;
define pctn /display left 'Percentage of total colors (%)' style=[width=%sysevalf(10 * 30 / (7+11+16+30))in];;
title 'Painting';
title2'Common colours per cohort';
run;
当使用 proc report
以 .rtf 格式生成 SAS table 时,列宽未与其指定的宽度对齐。这导致列标题占用多行,并且一些值被截断,我想避免这种情况。
使用数据:
/* Insert data */
data aaa;
input cohort $ color $ sum $ pctn $;
datalines;
group_1 dark_yellow 2 12.500%
group_2 orange 6 37.500%
group_2 dark_green 8 50.000%
overall orange 6 30.000%
overall dark_green 8 42.250%
;
run;
以及生成列宽分别为 7、11、16 和 30 的 .rtf 文件的代码:
/* Output settings */
options nocenter nodate nonumber missing=' ' orientation=landscape linesize=116 pagesize=42; * page settings;
ods output close; * close ods output;
ods rtf close; * close ods rtf;
ods listing close; * close ods listing;
footnote "Table generated on %sysfunc(date(), worddatx.w.)"; * insert date below report;
ods rtf file = "C:\Astudies\Colors.rtf" bodytitle;
/* Generate table */
proc report data=aaa nowd split='~';
column cohort color sum pctn;
define cohort /order order=data width=7 left 'Cohort';
define color /display width=11 left 'Color';
define sum /display width=16 left 'Number of colors';
define pctn /display width=30 left 'Percentage of total colors (%)';
title 'Painting';
title2'Common colours per cohort';
run;
title; * remove any titles;
footnote; * remove any footnotes;
ods rtf close; * close ods rtf;
ods listing;
这导致 table。第 3-4 列的标题跨越多行(它们的长度分别为 16 和 30 个字符)。第 2 列具有截断值,其中最大字符长度 (dark_yellow) 应为 11。
你可以在DEFINE
column/ STYLE=[]
选项中设置一个PROC REPORT
列样式width=
属性 .
示例代码
此示例假定 10 英寸的景观不动产,相对(无单位)列宽为 7、11、16 和 30。%SYSEVALF 计算将相对宽度映射到要在 ODS RTF 中使用的显式英寸渲染。
proc report data=aaa nowd split='~'
;
column cohort color sum pctn;
define cohort /order order=data left 'Cohort' style=[width=%sysevalf(10 * 7 / (7+11+16+30))in];
define color /display left 'Color' style=[width=%sysevalf(10 * 11 / (7+11+16+30))in];
define sum /display left 'Number of colors' style=[width=%sysevalf(10 * 16 / (7+11+16+30))in];;
define pctn /display left 'Percentage of total colors (%)' style=[width=%sysevalf(10 * 30 / (7+11+16+30))in];;
title 'Painting';
title2'Common colours per cohort';
run;