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

Running All Variables Through a Function in SAS

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

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

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

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

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

提前感谢您的帮助。

列表处理是处理此类问题所需的概念。您也可以使用 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() 获取每个数组元素的变量标签。