行标签被截断

Row label is being truncated

我编写了以下查询以从 SAS table 中提取不同军事状态的列表。

proc sql;
create table mil_stat as
    select distinct MILITARY_STAT_sERSS format $MILSTAT. as MILITARY_STATUS, 
        count(*) as TOTAL 
    from FPE
    group by MILITARY_STAT_sERSS;
quit;

我需要添加一个显示总计数的摘要行。我试图在 proc sql 语句中这样做,但不知道该怎么做。因此,我编写了以下 proc 报告语句以在报告中提供所需的行。

PROC REPORT DATA=work.mil_stat;
column MILITARY_STATUS TOTAL;
where MILITARY_STATUS ne '5';
define MILITARY_STATUS / group;
rbreak after / summarize style=[font_weight=bold];
compute MILITARY_STATUS;
    if MILITARY_STATUS ne . then c_MILITARY_STATUS=MILITARY_STATUS;
    else c_MILITARY_STATUS=' ';
    if _break_ = '_RBREAK_' then MILITARY_STATUS = "Grand Total";
endcomp;
run;

显示总计行,但 'Grand Total' 被截断为单个字符。

任何能够显示 'Grand Total' 字符串的帮助将不胜感激。

看起来 MILITARY_STAT_sERSS 只有一个字节长。而且,您与该变量一起使用的格式 $MILSTAT. 没有 'G'.

的任何解码

尝试使 MILITARY_STATUS 足够长以存储“总计”。

select MILITARY_STAT_sERSS as MILITARY_STATUS length=11 format=$MILSTAT. 
...

另一种解决方案是为总计分配一个值('G' 可以,或 'T',或任何适合您的数据的值),然后在格式中使用它。这将是我的首选解决方案,因为它避免了未格式化的值,并且使用较少 space,但确实需要您能够调整格式(或者您可以使用传递格式,如果没有)。

proc format;
  value $sex
  'F' = 'Female'
  'M' = 'Male'
  'T' = 'Grand Total';
quit;

proc report data=sashelp.class;
columns sex height;
format sex $sex.;
define sex/group missing;
define height/analysis mean;
rbreak after/summarize;
compute sex;
    if _break_='_RBREAK_' then sex='Total';
endcomp;
run;