3

嗨,我在 SAS 中创建图表时遇到问题。我的数据如下:日期,comp_1,comp_2,comp_3,total_value。我的数据按日期排序。变量 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;

这张图显示了 3 家公司的价值叠加,但我希望它们堆叠起来,这样我就可以看到每个日期公司的总价值。我需要重新格式化我的数据,我可以使用什么选项?

4

1 回答 1

3

您将需要使用三个“comp”变量的聚合值创建一个新变量。请参阅此 SAS 使用说明,其中包含一个很好的示例。这应该让您开始并欢迎使用 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;
于 2012-11-03T17:14:43.683 回答