如何使用proc gplot与组?

时间:2015-06-28 08:27:21

标签: sas

我有以下数据:

Year   Country    Score 
----   -------    -----
2007     AU         76        
2007     SG         78        
2008     AU         56        
2008     SG         90        
2009     AU         82       
2009     SG         48        

假设我想通过使用gplot显示每年每个国家/地区的分数(年份组),例如: output

我试过了:

plot Score*(country year);

plot country*year=score;

但他们都不能奏效。我不熟悉gplot,那么如何实现呢?

2 个答案:

答案 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;

但是这看起来并不好看,也没有相邻堆叠。我也不喜欢让他们坐在剧情的正确位置是多么困难。

相关问题