1

假设我有一个包含 4 个级别的类变量的数据集:A、B、C 和 D。如果我想在 SAS Studio 中创建四个系列图,我可以使用proc sgpanel.

proc sgpanel data = name;
panelby class;
series X = var1 Y = var2 / group = some_factor;
run;

如何修改此代码以创建 2 个面板,其中第一个面板具有 A 和 B 以及第二个 C 和 D 的图形?一个天真的解决方案是向数据集添加一个“虚拟”0-1 变量并使用panelby dummy. 但是我希望有一个更优雅的解决方案!

编辑:为了澄清我想在同一个面板中为 A 和 B 提供不同的图表,而不是将数据合并到一个图表中。

来自问题的图表

4

1 回答 1

0

如果您的目标是将 A/B 和 C/D 分别组合成一个系列,那么这很简单。

使用此sashelp.class示例作为基础:

proc sgpanel data=sashelp.class;
panelby age;
series x=height y=weight;
run;

我们创建了一种格式,以任何首选的方式组合类值:

proc format;
  value agegroupf
  11-13="Younger"
  14-16="Older"
  ;
quit;

然后应用格式。

proc sgpanel data=sashelp.class;
format age agegroupf.;
panelby age;
series x=height y=weight;
run;

这不会为面板上的各个类值显示单独的图;如果需要,则group可以与第二个类变量(相同但第二个变量)一起使用。但是,如果group已经在使用,如更新的问题中那样,实现它可能会很复杂。可以使用单独series的语句来显示每个语句,但这可能更加复杂。

这是进行叠加组的一种方法 - 只需复制ageage2.

data class;
  set sashelp.class;
  age2 = age;
run;

proc sgpanel data=class;
format age agegroupf.;
panelby age;
series x=height y=weight/group=age2;
run;

我认为在 GTL 中您可能无需实际创建第二个变量就可以做到这一点,但我认为这在常规 SGPanel 中是不可能的。

于 2021-09-13T22:29:44.770 回答