【问题标题】:Boxplot in SAS using proc gchartSAS中的箱线图使用proc gchart
【发布时间】:2016-08-11 17:41:56
【问题描述】:

第一个问题,是否可以在 SAS 中使用 proc gchart 生成箱线图?

如果可以的话,请给我一个简短的想法。

或者,关于使用 proc boxplot 的主题。 假设我有一个数据集,其中包含三个变量 ID 得分年份; 比如,

data aaa;
input id score year;
datalines;
1 50 2008
1 40 2007
2 30 2008
2 20 2007
;
run;

我想制作一个箱线图,显示每年的每个 ID。 (所以在这种情况下,一个图中有 4 个箱线图) 我怎样才能做到这一点?

我尝试过使用

proc boxplot data=aaa;
plot score*ID;
by year;
run;

但是,这不起作用,因为我们可以看到年份不是按顺序排序的。 有没有其他办法?

【问题讨论】:

    标签: sas


    【解决方案1】:

    您需要先对输入数据集进行排序。运行这个

    proc sort data = aaa;
        by year;
    run;
    

    然后你的 proc boxplot 应该像写的那样工作。

    【讨论】:

    • 您好,感谢您的回复。是的,我已经尝试过了。但是,如果我按年份排序,变量 ID 将不会按升序排列。因此,我仍然无法获得我想要的输出。
    • 您可以按多个变量排序。所以“按年份 id”而不是“按年份”
    • 其实我这里贴的数据是不完整的。我手头有一个更大的数据集,问题是我无法以递增的方式对 ID 和年份进行排序。
    • 感谢“按年份”;它有效,但是,对于箱线图,输出仍然不够好。年份已排序,如2007 2007 2007 2008 2008 2008,但对应的id如1 1 2 1 1 2。id仍然没有连续增加,因此不能用于箱线图。
    • “不够好”是什么意思?听起来这更像是您的基础数据而不是箱线图的问题;如果箱线图不是您想要使用的,也许可以尝试堆叠条形图或其他东西
    【解决方案2】:

    sgplot 很容易做到这一点,它是基础 SAS 中较新的 ODS Graphics 套件的一部分。

    proc sgplot data=sashelp.cars;
      vbox mpg_city/category=type group=origin grouporder=ascending;
    run;
    

    您将在示例数据中使用 category=idgroup=year - 您会在 x 轴上为每个 category 获得一个单独的刻度,然后您会为每个 group 获得一个单独的条形聚集在一起。

    【讨论】:

    • 非常感谢您的帮助!当我回到学校实验室时会尝试 tmr。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多