4

我正在尝试使用 SAS 中的 Proc sgplot 将每个组的数量添加到 xaxis 上的组标签中。这是我想要的数据和图表。我想在 xaxis 上获取每个条的样本(手写部分)。非常感激你的帮助!

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

proc sgplot data=have ;
vbarparm category= type  response=percent /group=sex groupdisplay=cluster datalabel;
run; 

我要创建的图表: 在此处输入图像描述

4

2 回答 2

3

您可以计算显示百分比值和文本n=<N>的条形数据标签

例子:

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

data plot;
  set have;
  barlabel = cats(percent) || ' %N/(n=' || cats(n_total, ')');
run;

proc sgplot data=plot;
  vbarparm 
    category=type  
    response=percent 
  / group=sex 
    groupdisplay=cluster 
    datalabel=barlabel datalabelfitpolicy=splitalways splitchar='/'
  ;
  label percent = 'Percent N having some attribute';
run; 

在此处输入图像描述

于 2021-02-10T06:35:53.863 回答
2

虽然我同意 Richard 的观点,最好将它放在条形标签中,但也很容易将它放在轴表中。

Data have ;
input type  sex $  n n_total percent ;
datalines;
0  F  6    29  20.7 
1  F  387  496 78.2  
0  M  4    15  26.6
1  M  264  305 86.5
;
Run; 

proc sgplot data=have ;
vbarparm category= type  response=percent /group=sex groupdisplay=cluster datalabel;
xaxistable n_total/class=sex classdisplay=cluster position=bottom location=inside colorgroup=sex;
run; 

classdisplay=cluster使值像条一样散开,location=inside将其放在条的正下方,并colorgroup=sex使其像条一样着色(而不是黑色)。 position=bottom是默认值,只是突出显示该选项。

如果您想以与 Richard 相同的方式进一步自定义显示的内容 - 通过创建一个包含您想要为每个显示的内容的文本变量,并将其用作您的variable(的第一个参数xaxistable)。该变量可以是数字或字符。

于 2021-02-10T21:49:30.263 回答