运行 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() 获取每个数组元素的变量标签。
我是 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() 获取每个数组元素的变量标签。