我是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()行,然后在变量名称更改时更改名称。
感谢您的帮助。
答案 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()获取每个数组元素的变量标签。