在过程中使用前缀列出宏变量的值(listing macro variable's values with prefix in a procedure)

编程入门 行业动态 更新时间:2024-10-28 08:24:33
在过程中使用前缀列出宏变量的值(listing macro variable's values with prefix in a procedure)

假设我创建了一个宏变量。

%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;

更多推荐

本文发布于:2023-07-05 22:06:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1042351.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:前缀   变量   过程中   listing   macro

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!