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的图片所期望的(尽管我承认它不清楚)。