楼主: akalius
1865 7

关于参数的循环问题,求高手指教 [推广有奖]

  • 10关注
  • 3粉丝

已卖:155份资源

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
3999 个
通用积分
2.8543
学术水平
4 点
热心指数
6 点
信用等级
6 点
经验
7835 点
帖子
262
精华
0
在线时间
613 小时
注册时间
2009-7-22
最后登录
2025-3-18

楼主
akalius 学生认证  发表于 2014-8-12 23:29:09 |AI写论文
20论坛币
比如,我现在有要进行循环的参数   ,要在一个宏程序中调用,想写成类似或者能实现同样功能的,求高手指点

谢谢

最佳答案

pobel 查看完整内容

%macro xunhuan(ds=a,par=,delim=); %let i=1; %do %while(%scan(%quote(&par),&i,%quote(&delim)) ne ); proc sort data=&ds ; by %scan(%quote(&par),&i,%quote(&delim)); run; %let i=%eval(&i+1); %end; %mend; %xunhuan(par=%str(year , qua , month , week , year qua ,id year, id year marks),delim=%str(,))
关键词:求高手 高手指点 宏程序 程序

沙发
pobel 在职认证  发表于 2014-8-12 23:29:10
%macro xunhuan(ds=a,par=,delim=);
%let i=1;
%do %while(%scan(%quote(&par),&i,%quote(&delim)) ne );
        proc sort data=&ds ;
          by %scan(%quote(&par),&i,%quote(&delim));
    run;
        %let i=%eval(&i+1);
%end;
%mend;

%xunhuan(par=%str(year ,  qua  , month , week , year qua ,id year, id year marks),delim=%str(,))
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
akalius + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
石油才子 发表于 2014-8-12 23:38:52
第一次来这里多多关照啊

板凳
pobel 在职认证  发表于 2014-8-13 07:21:12
也可以是这样:
%let ds=a;
%let byvar=year ,  qua  , month , week , year qua ,id year, id year marks;
data _null_;
    n=count("&byvar",",")+1;
    do i=1 to n;
           code="proc sort data=&ds; "
                    ||"by "||strip(scan("&byvar",i,","))||"; "
                        ||"run;";
                call execute(code);
        end;
run;

报纸
learsaas 发表于 2014-8-13 07:51:53
参见楼主自己的帖子,举一反三,你就会悟出奥秘。
https://bbs.pinggu.org/thread-3153079-1-1.html
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
akalius + 5 + 2 + 2 + 2 谢谢

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

地板
akalius 学生认证  发表于 2014-8-13 09:44:52
pobel 发表于 2014-8-13 07:21
也可以是这样:
%let ds=a;
%let byvar=year ,  qua  , month , week , year qua ,id year, id year mark ...
您好,我在后面想加一个输出的文件   ,但都显示这&i方面的问题  ,请问这样写是哪方面出问题了 code="proc sort data=&ds  out=test&i; "

7
pobel 在职认证  发表于 2014-8-13 10:38:53
akalius 发表于 2014-8-13 09:44
您好,我在后面想加一个输出的文件   ,但都显示这&i方面的问题  ,请问这样写是哪方面出问题了 code="pro ...
应该用:
code="proc sort data=&ds; out=test"||cats(i)||"; "

这里 i 只是数据步中的一个变量,而不是宏变量。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
akalius + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

8
mengha 发表于 2016-2-5 11:17:13
mark一下

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-10 21:02