通过SAS中的函数运行所有变量

时间:2015-02-19 15:49:41

标签: sas list-processing

我是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()行,然后在变量名称更改时更改名称。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

列表处理是您需要处理此类事务的概念。您也可以使用BY组处理,或者在某些情况下使用Paneling来处理此问题。

从方便您的来源创建包含变量列表的数据集。这可以是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()获取每个数组元素的变量标签。