全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1647 4
2011-07-06
悬赏 10 个论坛币 已解决
请问如果用循环
do i=1 to 10;
........

end;
表明i从1到10循环,

我的问题是现在要定义j循环,j和i不一样,j不是数字,是字符,j=a,b,c,d;也就是第一轮循环j=a,第二轮循环j=b,以此类推,请问如何写循环代码?

谢谢

最佳答案

pobel 查看完整内容

%macro test; %let string=a*b*c*d; %let i=1; %do %while(%scan(&string,&i,*) ne ); %let char=%scan(&string,&i,*); %put char &i: &char; %let i=%eval(&i+1); %end; %mend; %test
二维码

扫码加我 拉你入群

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

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

全部回复
2011-7-6 14:29:05
%macro test;
     %let string=a*b*c*d;
     %let i=1;

     %do %while(%scan(&string,&i,*) ne );
         %let char=%scan(&string,&i,*);
         %put char &i: &char;
                 %let i=%eval(&i+1);
     %end;      
%mend;

%test
二维码

扫码加我 拉你入群

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

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

2011-7-6 14:40:54
复制代码
二维码

扫码加我 拉你入群

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

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

2011-7-6 23:27:21
感谢1楼朋友的回复,您的code在data步可以,但是问题是如果在宏中就出错。
比如:
%macro test;
data _null_;
            %do i='a','b','c','d';
                    %put "i= &i";
            %end;      
    run;
%mend;

错误信息:ERROR: Expected %TO not found in %DO statement.  A dummy macro will be compiled.
请问如何解决?
二维码

扫码加我 拉你入群

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

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

2011-7-7 10:35:33
pinggu2688 发表于 2011-7-6 14:29
请问如果用循环
do i=1 to 10;
........

end;
表明i从1到10循环,

我的问题是现在要定义j循环,j和i不一样,j不是数字,是字符,j=a,b,c,d;也就是第一轮循环j=a,第二轮循环j=b,以此类推,请问如何写循环代码?

谢谢
Others already gives you some solutions.

Here is a way to get the job done in a different angle. It has many other usages


15 data _null_;
16 array charv[30] $1 _temporary_ ('a', 'b', 'c', 'd','e', '0');
WARNING: Partial value initialization of the array charv.
17 do i=1 to dim(charv);
18
19 if charv=' ' then leave;
20 put i= charv=;
21
22 end;
23 run;
i=1 charv[1]=a
i=2 charv[2]=b
i=3 charv[3]=c
i=4 charv[4]=d
i=5 charv[5]=e
i=6 charv[6]=0
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
二维码

扫码加我 拉你入群

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

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

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

分享

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