全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1159 1
2012-07-14
悬赏 10 个论坛币 已解决
论坛币
下边的代码是我的程序中的一个部分:

NORM=income_1, NORM=income_2, NORM=age_1, NORM=age_2, NORM=weight_1, NORM=weight_2

我想用宏来简化上面这个代码。各位大侠,跪求帮组编写一段SAS的宏程序,当我把(income age weight)输入给这个宏以后即可产生如下形式的字符串:

NORM=income_1, NORM=income_2, NORM=age_1, NORM=age_2, NORM=weight_1, NORM=weight_2

如果我输入其他不同数目的变量时,同理应该可以进行相似操作。

最后提醒一下,这个字符串最终将会用于PROC MDC(一个回归模块,类似PROC REG),而非用于DATA STEP。

非常感谢

最佳答案

pobel 查看完整内容

%macro test(n=,varlist=); %local result; %let i=1; %do %until(%scan(&varlist,&i) = ); %let var=%scan(&varlist,&i); %do j=1 %to &n; %if &i=1 and &j=1 %then %let result=NORM=&var._&j; %else %let result=&result, NORM=&var._&j; %end; %let i=%eval(&i+1); %end; &result; %mend; %test(n=3,varlist=income age weight other) %test(n=4,varlist=hah ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-14 01:49:45
%macro test(n=,varlist=);
   %local result;
   %let i=1;
   %do %until(%scan(&varlist,&i) = );
       %let var=%scan(&varlist,&i);
       %do j=1 %to &n;
              %if &i=1 and &j=1 %then %let result=NORM=&var._&j;
                  %else %let result=&result, NORM=&var._&j;
           %end;
           %let i=%eval(&i+1);
   %end;
   &result;
%mend;

%test(n=3,varlist=income age weight other)
%test(n=4,varlist=haha hoho)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群