楼主: ertyuj
1193 1

[原创博文] 如何用SAS的宏来简化一个重复操作? [推广有奖]

  • 0关注
  • 1粉丝

已卖:7份资源

硕士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
254 个
通用积分
0.7615
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
-351 点
帖子
136
精华
0
在线时间
164 小时
注册时间
2007-2-7
最后登录
2022-3-17

楼主
ertyuj 发表于 2012-7-14 01:49:44 |AI写论文
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 ...
关键词:sas的 如何用 Data step Income Weight income 字符串 如何 程序

沙发
pobel 在职认证  发表于 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)
和谐拯救危机

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 21:35