楼主: 邢不行
6446 9

[原创博文] 问个低级问题..如何在data步中循环调用一个宏 [推广有奖]

已卖:1906份资源

院士

10%

还不是VIP/贵宾

-

威望
1
论坛币
26755 个
通用积分
155.8944
学术水平
489 点
热心指数
509 点
信用等级
460 点
经验
53138 点
帖子
585
精华
26
在线时间
1199 小时
注册时间
2010-4-30
最后登录
2025-12-31

楼主
邢不行 在职认证  发表于 2011-3-8 21:32:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
问题是这样的:我有一个编好的宏,叫a(),有参数。
我希望在data步中循环调用这个宏10次,而且每次调用时宏参数都要变,从1变成10。
请问程序应该怎么写啊...
二维码

扫码加我 拉你入群

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

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

关键词:data步 Data 如何 程序 而且

回帖推荐

myc_sas 发表于2楼  查看完整内容

don't know if it is what you want... (&count is the number of loop, for example 10) %macro blabla; data _null_; set xxx.xx end=last; call symput(compress(left(trim('var' !! put(_n_,2.)))),var); if last then do; call symput('count',put(_n_,3.)); end; run; %do i=1 %to &count; % ...

本帖被以下文库推荐

沙发
myc_sas 发表于 2011-3-8 22:55:40
don't know if it is what you want...

(&count is the number of loop, for example 10)

%macro blabla;
        data _null_;
                 set xxx.xx end=last;
            call symput(compress(left(trim('var' !! put(_n_,2.)))),var);
            if last then do;
                call symput('count',put(_n_,3.));
            end;
        run;
        %do i=1 %to &count;
                %a(&&var&i)
        %end;
%mend blabla;
已有 1 人评分热心指数 收起 理由
论坛数据分析 + 1 观点有启发

总评分: 热心指数 + 1   查看全部评分

藤椅
kuhasu 发表于 2011-3-9 03:40:39
人家问data步~~
%macro huangshiren(fengjie);
%put &fengjie.,这是为什么呢~~~;
%put                          ;
%mend;
data xiaoniao;
format yiren $100. ;
do yiren='亲爱的','五花肉','正太哥','强哥','Honey~','傻瓜','蜜糖','果脯','五毛','美狗','郎教授','如花','年轻人 May the force be with you','招行行长:房价上涨是因为老百姓钱太多了','巴菲特看到我国的物价发展水平也会哭~';
call execute('%huangshiren('||yiren||');');
end;
run;

板凳
ntsean 发表于 2011-3-9 05:26:23
你要把datastep放在macro里面

报纸
邢不行 在职认证  发表于 2011-3-9 09:25:20
我觉得4楼的回答可以用。
没有其他的答案了嘛?
不管去哪里 只要在路上

地板
horace_chen 发表于 2011-3-9 11:27:21
可以试试call execute('%macro');

7
myc_sas 发表于 2011-3-9 16:52:13
谢谢版主鼓励...我个人理解, macro并不是像其他编程语言比如java里面的public function...
所以从data step简单循环调用macro应该很少用到. 俺也是初学, 请高手多指教

8
无名浪客 在职认证  发表于 2011-3-9 17:11:42
  1. %macro a(a);
  2.   b=&a.;
  3.   output;
  4. %mend a;
  5. data test;
  6.   do i=1 to 10;
  7.     %a(i);
  8.   end;
  9. run;
复制代码
已有 1 人评分经验 收起 理由
李会超 + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

9
tagman 发表于 2011-3-15 15:43:16
正在学习SAS,多看看

10
raindewRD 在职认证  发表于 2015-11-3 11:30:20

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 16:33