【问题标题】:Running All Variables Through a Function in SAS通过 SAS 中的函数运行所有变量
【发布时间】:2015-04-21 01:17:24
【问题描述】:

我是 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() 行,然后随着变量名称的变化在将来更改名称。

提前感谢您的帮助。

【问题讨论】:

标签: sas list-processing


【解决方案1】:

列表处理是您处理此类事情所需的概念。在某些情况下,您还可以使用 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() 获取每个数组元素的变量标签。

【讨论】:

  • 谢谢乔!第二个示例正是我所需要的,并且对于我需要添加到该程序中的各种其他任务很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
相关资源
最近更新 更多