SAS proc报告RTF表列的宽度与指定的宽度不匹配

时间:2018-09-03 15:17:34

标签: sas report rtf ods

使用proc report生成.rtf格式的SAS表时,列宽未与其指定的宽度对齐。这导致列标题占用多行,并且一些值被截断,我想避免这种情况。

使用数据:

/* 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;

下面的代码生成一个.rtf文件,其列宽分别为7、11、16和30:

/* 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;

这将导致该表。第3-4列的标题跨越多行(长度分别为16和30个字符)。第2列的值被截断,其中最大字符长度(dark_yellow)应该为11。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在PROC REPORT width=选项中设置DEFINE列样式/ STYLE=[]属性。

示例代码

此示例假定景观房地产为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;