SAS PROC REPORT合计行Grand Total标签被截断问题求助
问题原因
你的MILITARY_STATUS变量是从源表的MILITARY_STAT_sERSS字段继承的字符长度,大概率仅为1位,因此赋值长度远大于1的"Grand Total"字符串时,只会保留首字符,出现截断问题。
解决方法
你可以任选以下两种方案调整:
方案1:提前在PROC SQL步骤设置变量长度
修改你生成mil_stat表的SQL代码,为MILITARY_STATUS指定足够的字符长度(示例设为20,可根据实际需求调整):
proc sql; create table mil_stat as select distinct MILITARY_STAT_sERSS format $MILSTAT. length=20 as MILITARY_STATUS, count(*) as TOTAL from FPE group by MILITARY_STAT_sERSS; quit;
调整后原来的PROC REPORT代码无需修改即可正常显示完整的合计行文本。
方案2:在PROC REPORT的计算块中声明变量长度
如果你不想修改原始mil_stat表的结构,直接在PROC REPORT的计算块开头新增长度声明即可:
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; length MILITARY_STATUS $20; /* 新增此行指定变量长度 */ if MILITARY_STATUS ne . then c_MILITARY_STATUS=MILITARY_STATUS; else c_MILITARY_STATUS=' '; if _break_ = '_RBREAK_' then MILITARY_STATUS = "Grand Total"; endcomp; run;
内容的提问来源于stack exchange,提问作者Gary Glasspool
相关产品推荐
相关产品推荐

