楼主: wayne0524
7215 1

[有偿编程] 宏循环的嵌套问题。SAS宏编程高手进!! [推广有奖]

  • 25关注
  • 6粉丝

已卖:1370份资源

讲师

40%

还不是VIP/贵宾

-

威望
0
论坛币
4534 个
通用积分
8.4306
学术水平
30 点
热心指数
44 点
信用等级
30 点
经验
8310 点
帖子
367
精华
0
在线时间
488 小时
注册时间
2007-2-3
最后登录
2022-11-2

楼主
wayne0524 发表于 2013-7-1 23:12:15 |AI写论文
40论坛币
      写了 一段代码如下     ,我具体想干的就是先按条件生成一个大表   mo.Y_&ID ,然后再把这个表按条件拆开分别导出(这一步我想用宏内的循环来实现),现在想用宏一次实现完成这两步骤。但是,到了里面部分大表 mo.Y_&ID 生完后按条件分拆 ,编写宏循环的时候遇到困难过不去,求高手指点!!!    下面是我写的,高手可以直接修改。                                      

%macro  out(type=)
...............
data   mo.Y_&ID ;
set  XXXXX;
..........
run;
/*然后把mo.Y_&ID按条件拆开分别导出,这里我只举了三个作为例子*/
data   
mo.X1_F18_25                              
mo.X2_F25_30                                 
mo.X3_F30_35       ;                                                
set  mo.Y_&ID ;      
if  GNDAGE  = "F/18<= <25" then output mo.X1_F18_25 ;        
else if  GNDAGE  = "F/25<= <30" then output  mo.X2_F25_30 ;                             
else if  GNDAGE  = "F/30<= <35" then output  mo.X3_F30_35 ;      run;                                                                                                                                                                     
/*这里我想用一个宏循环逐个导出,但是不知道怎么写,下面是我瞎写的,请大侠看懂我意思修改*/
%let var1 = %X1_F18_25;
%let var2 = %X2_F25_30 ;
%let var3 = %X3_F30_35   ;
  %do i = 1 %to 3;
                 
PROC EXPORT DATA= mo.&varI                                                                                                      
            OUTFILE= "D:\kk\&varI.csv"                                                                                                                           
            DBMS=CSV REPLACE;                                                                                                           
RUN;
%end;

%mend;

%Out(type=XXX);
run;


求高手帮忙出主意!

关键词:编程高手 SAS宏 宏循环 Macro Data 编程高手

沙发
yongyitian 发表于 2013-7-2 01:03:30
/* try this */

data xxx;
input GNDAGE $10.;
datalines;
F/18<= <25
F/25<= <30
F/30<= <35
; run;
%let ID=01;

%macro  out(type=);
data work.Y_&ID ;
   set  &type;
run;

data work.X1_F18_25
     work.X2_F25_30
     work.X3_F30_35;
set  work.Y_&ID;
        if  GNDAGE  = "F/18<= <25" then output work.X1_F18_25;
   else if  GNDAGE  = "F/25<= <30" then output work.X2_F25_30;
   else if  GNDAGE  = "F/30<= <35" then output work.X3_F30_35;
run;

%let var1 = X1_F18_25;
%let var2 = X2_F25_30;
%let var3 = X3_F30_35;

  %do i = 1 %to 3;
     PROC EXPORT DATA= work.&&var&I
      OUTFILE= "D:\kk\&&var&I...csv"
      DBMS=CSV REPLACE;
      RUN;
  %end;
%mend out;

%Out(type=XXX);

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

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