SAS条形图与百分比

时间:2015-06-29 16:40:36

标签: sas bar-chart

我是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

每个患者列出他们被分配到的类别(变量'类别'),一个指示变量,显示他们是否接受了测试(变量'test',其中'1'=接受测试'0 '=未接受测试)并且如果他们接受了测试,则进行测试(变量'test_location')。

我想要创建一个条形图,其中x轴上的类别和y轴表示进行测试的患者百分比(测试= 1),每个条形图显示在Site 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,但我无法弄清楚如何准确地为我所有的变量做到这一点。

感谢您的帮助!

EDIT;

我添加了百分比属性,如下面提到的海报,但它没有给我我想要的百分比(它给我一个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%的酒吧(12名患者在16名高风险患者中进行测试)接受测试,然后将条形阴影显示为41.66%这些测试在Site 1,Site3的33.34%和Site 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 个答案:

答案 0 :(得分:0)

如果您使用的是SAS 9.4+,那么

proc sgplot确实有百分比统计数据。直到那时才添加(根据文档,无论如何;你可以尝试一下,看看它是否未记录。)

如果没有,则proc freq应该允许您创建proc sgplot vbarparm可以使用的值。你没有在proc freq上面发帖,所以我不知道你尝试了什么,但环顾四周;例如,my MWSUG paper显示了这样做的一个示例(出于不同的原因,但结果基本相同)。

这是完成工作的tabulate - 可能比使用freq更容易。

proc tabulate data=have out=freq1;
class category test test_location/missing;
tables test_location,category,test*pctn;
run;


proc sgplot data=Freq1;
    where test=1;
    vbar category / response=pctn_000 group=test_location;
quit;

答案 1 :(得分:0)

service'
2015-06-30T08:21:54.511770+00:00 app[web.1]:    /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/httpserver.rb:94:in
相关问题