0

我是 SAS 新手,需要 sgplot 112 个变量。变量名称都非常不同,并且可能会随着时间而改变。如何在不必列出所有变量的情况下调用语句中的每个变量?

这是我到目前为止所做的:

%macro graph(var);
proc sgplot data=monthly;
series x=date y=var;
title 'var';
run;
%mend;

%graph(gdp);
%graph(lbr);

上面的代码可能很痛苦,因为我必须列出 112 %graph() 行,然后在将来随着变量名称的变化而更改名称。

我在这里先向您的帮助表示感谢。

4

1 回答 1

0

列表处理是您需要处理此类事情的概念。在某些情况下,您还可以使用 BY 组处理或在图形面板的情况下解决此问题。

从您方便的来源创建包含变量列表的数据集。这可以是一个 excel 或文本文件,或者如果有办法以编程方式告诉您需要哪些变量,则可以从您的数据中创建它。

然后,您可以使用多种方法中的任何一种来生成:

proc sql;
  select cats('%graph(',var,')') 
    into: graphlist separated by ' '
    from yourdata;
quit;

&graphlist

例如。

在您的情况下,您还可以生成每个变量一行的垂直数据集,这可能更容易确定哪些变量是正确的:

data citiwk;
  set sashelp.citiwk;
  var='COM';
  val=WSPCA;
  output;
  var='UTI';
  val=WSPUA;
  output;
  var='INDU';
  val=WSPIA;
  output;
  val=WSPGLT;
  var='GOV';
  output;
  keep val var date;
run;
proc sort data=citiwk;
  by var date;
run;

proc sgplot data=citiwk;
  by var;
  series x=date y=val;   
run;

虽然我对这四个进行了硬编码,但您可以轻松地创建一个数组并使用 VNAME() 来获取变量名或 VLABEL() 来获取每个数组元素的变量标签。

于 2015-02-19T16:21:29.040 回答