【问题标题】:How to create overlaid histograms sas with short format data?如何使用短格式数据创建叠加直方图 sas?
【发布时间】:2015-07-30 17:37:51
【问题描述】:

我有这样的数据:

var1  target
1.2   X
2     Y
2.3   Z

我想用百分比覆盖直方图,看起来像这样:

图表可以堆叠,只要它们是可比较的。我已经尝试过了,但它不起作用:

proc univariate data=mydata;
  var var1;
  by target;
  histogram;
run;

【问题讨论】:

  • 你需要平滑线和直方图吗?
  • 平滑线会很好,但不是必需的。当我回到办公室时,我会试试你的代码。谢谢

标签: graph sas histogram


【解决方案1】:

在 SAS 9.4m3 中,在 PROC UNIVARIATE 的 HISTOGRAM 语句中添加了 OVERLAY 选项。这意味着您现在可以直接从 PROC UNIVARIATE 获取您想要的图表:

proc Univariate data=sashelp.iris;
class Species;
var SepalLength;
histogram SepalLength / kernel overlay;
run;

在 PROC SGPLOT 中,SAS 9.4m2 引入了对 HISTOGRAM 语句中的 GROUP= 选项的支持。因此,如果您更喜欢 PROC SGPLOT,您可以将数据转换为长格式并使用 GROUP= 选项。

proc sgplot data=sashelp.iris;
histogram SepalLength / group=Species  transparency=0.5;
density SepalLength/ group=Species type=kernel;
run;

有关叠加和拼接直方图的更多信息,请参阅文章"Comparative histograms: Panel and overlay histograms in SAS"

【讨论】:

    【解决方案2】:

    将它们放在一个面板中很容易:

    data have_data;
      call streaminit(7);
      do _j = 1 to 1e3;
          do _i = 1 to 3;
            target=byte(_i+120);
            var1=rand('Normal',_i,0.5);
            output;
          end;
      end;
    run;
    
    proc sgpanel data=have_data;
      panelby target/columns=1;
      histogram var1;
      density var1;
    run;
    

    当然,这不是重叠的。叠加更具挑战性,我认为需要一些额外的步骤。

    要进行叠加,最简单的选择可能是将var1 拆分为三个变量,每个目标值一个。 (对于其他目标值,它可以是空白的。)然后您可以在一次 SGPLOT 调用中创建三个直方图和密度图。

    data want;
      set have_Data;
      array vars[3];
      vars[rank(target)-120] = var1;
    run;
    title;
    proc sgplot data=want noautolegend;
      histogram vars1/name='x' legendlabel='x';
      histogram vars2/name='y' legendlabel='y';
      histogram vars3/name='z' legendlabel='z';
      density vars1;
      density vars2;
      density vars3;
      keylegend 'x' 'y' 'z'/position=top;
    run;
    

    我认为,如果您知道和/或愿意学习它,我认为您也可以使用 gtl 来执行此操作,因为这可以让您覆盖直方图,如果需要,我可能可以模拟一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2013-05-03
      相关资源
      最近更新 更多