Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 如何在组中使用proc gplot?_Sas - Fatal编程技术网

Sas 如何在组中使用proc gplot?

Sas 如何在组中使用proc gplot?,sas,Sas,我有以下数据: Year Country Score ---- ------- ----- 2007 AU 76 2007 SG 78 2008 AU 56 2008 SG 90 2009 AU 82 2009 SG 48 假设我想使用g

我有以下数据:

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);


但它们都不能工作。我不熟悉gplot,那么如何实现这一点呢?

/*首先获取要绘制的2007年数据*/

PROC SQL;
 create table data2007 as
 select * 
 from data_original
 where year=2007;
QUIT; 
/*然后使用symbol语句打印数据*/

symbol interpol=boxt;
proc gplot data=data2007;
 plot score*country;
run;
quit; 
/*您还可以研究PROC单变量和PROC箱线图以获得类似的结果*/

如果你想在一年内做到这一点。。。。我相信以下措施会奏效:

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; 

注意要绘制的层数。

/*首先获取要绘制的2007年数据*/

PROC SQL;
 create table data2007 as
 select * 
 from data_original
 where year=2007;
QUIT; 
/*然后使用symbol语句打印数据*/

symbol interpol=boxt;
proc gplot data=data2007;
 plot score*country;
run;
quit; 
/*您还可以研究PROC单变量和PROC箱线图以获得类似的结果*/

如果你想在一年内做到这一点。。。。我相信以下措施会奏效:

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; 

注意要绘制的层数。

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;

但这看起来不太好,也不相邻堆叠。我也不喜欢让他们坐在绘图的正确位置有多难。

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;

但这看起来不太好,也不相邻堆叠。我也不喜欢让他们坐在情节的正确位置有多难。

BY语句每年都会生成单独的图形(单独的整体图像),这可能(但不一定)不是基于OP的图像所希望的(尽管我承认不清楚)。BY语句每年都会生成单独的图形(分开整张图片),这可能(但不一定)不是基于OP的图片所期望的(尽管我承认它不清楚)。