SAS Proc Gchart 堆积面积图

3

您好,我在使用SAS创建图表时遇到了问题。我的数据如下所示:日期,公司1的价值,公司2的价值,公司3的价值,总价值。我的数据按日期排序。变量comp_表示特定日期公司的价值。以下是我的代码:

proc gplot data=dev2.Actionfinal2;
    plot (comp_1 comp_2 comp_3)*date 
         / overlay areas=3 vaxis=0 to 100000 by 20000;
    symbol1 i=join v= cv= ci=red;
    symbol2 i=join v= cv= ci=blue;
    symbol3 i=join v= cv= ci=green;
run; 
quit;

这张图展示了三家公司的价值叠加,但我想要它们堆叠起来,以便我可以看到每个日期的公司总价值。我需要重新格式化我的数据吗?有哪些选项可以使用?

1个回答

3
你需要创建一个新变量,存储三个"comp"变量的聚合值。请参阅 this SAS usage note,里面有很好的示例。这样就可以让你开始了,在StackOverflow欢迎你! 更新:我认为我更好地理解了问题:你需要对数据进行去规范化(将列转换为观测)。所以请尝试以下操作:
data test(keep=company value date);
  set dev2.Actionfinal2;
  company = 1; value = comp_1; output;
  company = 2; value = comp_2; output;
  company = 3; value = comp_3; output;
run;

proc sort data=test;
   by date company;
run;

data test2;
   set test;
      by date;
   if first.date then new_y=0;
   new_y + value;
run;

symbol1 i=join v= cv= ci=red;
symbol2 i=join v= cv= ci=blue;
symbol3 i=join v= cv= ci=green;

proc gplot data=test2;
    plot new_y*date=company 
         / areas=3 vaxis=0 to 100000 by 20000;
run; 
quit;

很好,它给了我我需要的!非常感谢! SAS中的图表非常完美,我可能还有一个后续问题。 我希望最终结果以PDF格式呈现,因此我使用了经典的ODS PDF语句,但是它生成了一个PDF文档,其中包含每个公司的3个图表,而不是与SAS中相同的图表...我需要指定选项才能获得相同的结果吗? - Alexandre Forest Boucher
1
很抱歉,我在ODS方面并不是很有天赋。无论如何,你最好是提出另一个与这个新问题相关的S/O问题。你可以参考这个问题(给出一个链接),但请提供你尝试过的PROC GPLOTODS语句的示例。我相信你会得到一个好的回答。如果你满意,请“接受”这个答案(这样它就会显示为“已回答”)。 - BellevueBob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接