将PROC FREQ的输出合并在一起

编程语言 2026-07-09

我有一个PROC FREQ的输出,看起来像这样:

enter image description here

要把这两个值合并,我使用了以下代码:

myval = cats(N, " (", put(Percent, 5.1), "%)");

它得到如下结果:3(15%)

那么如果我想要如下的结果呢?

3 ( 15%)

这是为了报表格式的需要。换句话说,我需要在 "3" 和 "(" 之间添加一个空格,在15% 之前再留两个空格。

解决方案

使用CATS() 会去掉(删去)列表项的前导空格和尾随空格。如果你想保留空格,那么就使用能够保留空格的办法。

下面给出一些示例。

 73         data have;
 74           n=3;
 75           percent = 15;
 76           length str1-str5 $20 ;
 77         
 78           str1 = cats(N, ' (', put(Percent, 5.1), '%)');
 79           str2 = catx(' ',n,'(',put(percent,5.1),'%)');
 80           str3 = catx(' ',n,cat('(',put(percent,5.1),'%)'));
 81           str4 = catx(' ',n,cats('(',put(percent,5.1),'%)'));
 82           str5 = cat(put(n,comma5.),' (',put(percent,5.1),'%)');
 83           put (str1-str5) (= $quote. /);
 84         run;

 str1="3(15.0%)"
 str2="3 ( 15.0 %)"
 str3="3 ( 15.0%)"
 str4="3 (15.0%)"
 str5="    3 ( 15.0%)"

请注意,按照5.1版的格式,数值15会显示为 15.0

STR3看起来像你所请求的那样(但因为你没有使用固定宽度字体发布,所以很难判断)。

STR4在我看来更好。

如果你打算使用固定宽度字体打印STR5,那么会更好,因为这样同一列中的数值就会在列中保持对齐。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章