假设我创建了一个宏变量。
%let par = var1 var2 var3;
现在我想在这样的过程中使用这些值
proc score data=test type=parms score=par out=score; var W_var1 W_var2 W_var3; run;
例如,如果var1 = age,那么我想在var语句中列出W_age。 我试过var W_∥ 但它不起作用。 有人能帮我解决一个简单的解决方案吗? 十分感谢!!
Let's say I create a macro variable.
%let par = var1 var2 var3;
Now I want to use those values in a procedure like this
proc score data=test type=parms score=par out=score; var W_var1 W_var2 W_var3; run;
For example, if var1=age then I want to list W_age in the var statement. I tried var W_∥ but it doesn't work. Can anyone help me with a simple solution here? Big thanks!!
最满意答案
您必须创建一个宏来解决此问题。
宏从宏变量中获取每个参数,并为其添加一些前缀。
%macro list_with_prefix(string, prefix); %local i; %let i = 1; %do %until(%scan(&string., &i., %str( )) = ); &prefix.%scan(&string., &i., %str( )) %let i = %eval(&i. + 1); %end; %mend; %let par = var1 var2 var3; proc score data=test type=parms score=par out=score; var %list_with_prefix(&par, W_); run;You have to create a macro to resolve this problem.
The macro gets each parameter from macro variable and adds to it some prefix.
%macro list_with_prefix(string, prefix); %local i; %let i = 1; %do %until(%scan(&string., &i., %str( )) = ); &prefix.%scan(&string., &i., %str( )) %let i = %eval(&i. + 1); %end; %mend; %let par = var1 var2 var3; proc score data=test type=parms score=par out=score; var %list_with_prefix(&par, W_); run;更多推荐
发布评论