我正在尝试在SAS中制作一个箱形图,在同一个图表中显示5个周期的2个处理。我可以让它做一个或另一个但不是两个。代码如下。
proc boxplot data=data;
id treatment;
plot pred1*sample;
run;
也尝试了
proc boxplot data=data;
plot (pred1 sample)*treatment;
run;
无论如何都没有运气。有任何想法吗?似乎这应该是直截了当的。
由于
答案 0 :(得分:3)
proc sgplot
可能会这样做,如果我理解正确,如果你有正确版本的SAS(9.3+或者9.4+,我不确定哪个)。
我假设你想要两个盒子,一个用于pred,一个用于样品。这是一个简单的例子:
data treatments;
call streaminit(7);
do treatment=1 to 2;
do period=1 to 5;
pred1 = treatment+period+rand('normal')*4;
sample = treatment+period+rand('normal')*5;
output;
end;
end;
run;
proc sgplot data=treatments;
hbox pred1/ category=treatment legendlabel='Prediction' discreteoffset=.2 boxwidth=0.2;
hbox sample/category=treatment legendlabel='Sample' boxwidth=0.2;
run;
我使用discreteoffset
(稍微移动一下条)将它们设置在一起,然后收缩条以匹配偏移量。
您还可以使用group
来执行此操作,使用垂直数据集(即,一个'值'变量,其中包含一个指示符,用于标识他们所在的结果组)。 / p>
data treat_vert;
set treatments;
group='Prediction';
value=pred1;
output;
group='Sample';
value=sample;
output;
run;
proc sgplot data=treat_vert;
hbox value/category=treatment group=group;
run;
两种选择在标签/等方面都有很大的灵活性。如果你想走那条路。