我有以下数据:
Year Country Score
---- ------- -----
2007 AU 76
2007 SG 78
2008 AU 56
2008 SG 90
2009 AU 82
2009 SG 48
假设我想通过使用gplot显示每年每个国家/地区的分数(年份组),例如:
我试过了:
plot Score*(country year);
和
plot country*year=score;
但他们都不能奏效。我不熟悉gplot,那么如何实现呢?
答案 0 :(得分:0)
/ *首先抓住你要绘制的2007年数据* /
PROC SQL;
create table data2007 as
select *
from data_original
where year=2007;
QUIT;
/ *然后使用符号语句* /
绘制数据symbol interpol=boxt;
proc gplot data=data2007;
plot score*country;
run;
quit;
/ *您还可以研究PROC UNIVARIATE和PROC BOXPLOT以获得类似的结果* /
如果你想在一年之前完成这项工作......我相信以下内容会有效:
symbol interpol=boxt;
proc gplot data=data2007;
plot score*country;
by year;
run;
quit;
如果您想拥有全年和所有国家/地区:
PROC SQL;
create table new_data as
select year
, country
, LEFT(TRIM(country) || " _ " || year) as country_year
from data_original
QUIT;
symbol interpol=boxt;
proc gplot data=data2007;
plot score*country_year;
run;
quit;
请注意要绘制的关卡数量。
答案 1 :(得分:0)
SGPLOT将是获得此优惠的最简单方法;它在许多领域比GPLOT强大得多,而且漂亮的箱形图就是其中之一。
这非常接近你想要的。您可能需要做一些事情来准确地获得您想要的图例,但它确实按照您的要求对单独的框图进行分组。我投入了一些额外的数据,使箱形图看起来很逼真。
data have;
input Year Country $ Score ;
datalines;
2007 AU 76
2007 AU 74
2007 AU 78
2007 SG 78
2007 SG 80
2007 SG 76
2008 AU 56
2008 SG 90
2009 AU 82
2009 SG 48
2008 AU 54
2008 AU 58
2008 SG 88
2008 SG 92
2009 AU 78
2009 AU 86
2009 SG 44
2009 SG 52
;;;;
run;
title;
proc sgplot data=have;
vbox score/category=country group=year groupdisplay=stacked; *or reverse category and group depending on your preference;
run;
GPLOT有点棘手。你在GPLOT中获得群组的方式是等号,所以:
symbol interpol=boxt;
proc gplot data=have;
plot score*country=year;
run;
quit;
但是这看起来并不好看,也没有相邻堆叠。我也不喜欢让他们坐在剧情的正确位置是多么困难。