我是SAS的新用户,因此非常感谢任何反馈 . 我正在尝试在SAS中创建一个条形图,其中显示按类别(风险分层)接受测试的患者百分比,然后在其中显示接收测试的位置(位置) . 我的数据集如下所示:
Category Test Test_location
High Risk 1 Site 1
Intermediate Risk 1 Site 2
Low Risk 0 .
Intermediate Risk 0 .
High Risk 1 Site 3
每个患者列出他们被分配到的类别(变量'类别'),一个指示变量,显示他们是否接受了测试(变量'测试',其中'1'=接受测试,'0'=做没有接受测试)并且如果他们接受了测试,那么测试就发生了(变量'test_location') .
我想创建一个条形图,其中x轴上的类别和y轴表示进行测试的患者百分比(测试= 1),每个条形图显示在站点1,2和3中发生了多少次测试 .
我有这个代码,但它给了我接受测试而不是百分比的患者的数量:
proc sgplot data=test;
vbar category / response=test
group=test_location groupdisplay=stack;
yaxis grid values=(0 to 100 by 10) label="Percentage of patients who received testing (%)";
label Category= "Risk Stratification";
keylegend /title="Testing Location" position=bottom;
quit;
我不认为proc sgplot有一个百分比统计,所以我尝试做一个proc freq,但我无法弄清楚如何准确地为我所有的变量做到这一点 .
谢谢你的帮助!
编辑;
我添加了百分比属性,如下面建议的海报,但它没有给我我想要的百分比(它给我一个pct_col输出test *类,我想要pct_row) . 下面的代码给出了我想要的百分比,但我还想添加test_location以在每个栏上显示每个位置的患者百分比 .
proc tabulate data=test_util out=freq1;
class category test;
tables category,test*rowpctn;
run;
proc sgplot data=Freq1;
where test=1;
vbar category / response=pctn_10;
quit;
我想要的例子:在下面的虚拟数据集中,对于高风险患者,例如,我想要一个显示75%(在16名高风险患者中有12名患者接受测试)的酒吧接受测试,然后有条阴影显示,这些测试的41.66%在站点1,站点2为33.34%,站点3为25% . 中等和低风险类别等等 . 如果有一种方法可以用精确的百分比来标记子部分,那也会很棒 .
虚拟数据集:
data test;
infile datalines missover;
input ID Category $ Test Test_location $;
datalines;
1 High 1 Site_1
2 High 1 Site_1
3 High 1 Site_1
4 High 1 Site_1
5 High 1 Site_1
6 High 1 Site_2
7 High 1 Site_2
8 High 1 Site_2
9 High 1 Site_2
10 High 1 Site_3
11 High 1 Site_3
12 High 1 Site_3
13 High 0
14 High 0
15 High 0
16 High 0
17 Intermediate 1 Site_1
18 Intermediate 1 Site_1
19 Intermediate 1 Site_2
20 Intermediate 0
21 Intermediate 0
22 Intermediate 0
23 Intermediate 0
24 Intermediate 0
25 Intermediate 0
26 Low 1 Site_1
27 Low 1 Site_1
28 Low 1 Site_1
29 Low 1 Site_2
30 Low 1 Site_2
31 Low 1 Site_2
32 Low 1 Site_3
33 Low 0
34 Low 0
35 Low 0
36 Low 0
37 Low 0
38 Low 0
;
2 回答
proc sgplot
确实有一个百分比统计,如果你添加到那一点(根据文档,无论如何;你可以试试看,以防它没有记录 . )如果没有,那么
proc freq
应该允许您创建proc sgplot
与vbarparm
可以使用的值 . 你没有发布你的proc freq
所以我还没试过,但环顾四周;例如,my MWSUG paper显示了这样做的一个例子(出于不同的原因,但结果大致相同) .这是一个完成工作的
tabulate
- 可能比使用freq
更容易 .