楼主: coximo07
4355 5

SAS 宏命令的循环 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
9
精华
0
在线时间
11 小时
注册时间
2013-7-4
最后登录
2014-5-12

楼主
coximo07 发表于 2013-11-18 16:24:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
这是我的宏命令cut(x,y,out),
我想不断变化x(10-100, by 1),y(0.1-9, by 0.1),out(每一对x,y生成不同的out数据集),试了半天说循环不闭合,
求高人给一个让下面这个宏不断对 x, y, out循环的SAS命令。
%macro cut(x,y,out);
data abc2;
set sasuser.abc;
if risk>=&x then dag1=1; /*step1:risk score筛选结果*/
            else dag1=2;
if fpg>=&y then dag2=1; /*step2:FPG筛选结果*/
           else dag2=2;
if dag1=1 and dag2=1 then dag=1;
                     else dag=2;
if FPG>=7 or OGTT>=11.1 then WHO=1; /*按照WHO标准诊断结果*/
                         else WHO=2;  
ods listing;
ods output  Freq.Table1.CrossTabFreqs=out1;
proc freq;
tables dag*WHO;
run;
quit;
ods output close;
ods listing;
data out2;
set out1;
keep Frequency dag WHO ColPercent;
run;
data &out;
merge out2(where=(dag=1 and WHO=1) rename=(Frequency=n)) out2(where=(dag=2 and WHO=2) rename=(ColPercent=ColPercent2)) ;
youdex=ColPercent+ColPercent2-100;
s1=&x ;
s2=&y;
run;
%mend cut;

二维码

扫码加我 拉你入群

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

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

关键词:宏命令 Frequency percent listing sasuser 财富 宏命令

沙发
zhou.wen 发表于 2013-11-18 16:47:13
  1. data task;
  2. i=1;
  3. do x=10 to 10 by 1;
  4.         do y=0.1 to 0.9 by 0.1;
  5.                 out=cat("data",strip(i));
  6.                 i=i+1;
  7.                 output;
  8.         end;
  9. end;
  10. drop i;
  11. run;
  12. %macro cut;
  13. %let x=&x;
  14. %let y=&y;
  15. %let out=%sysfunc(dequote(&out));

  16. data &out;
  17. x="&x";
  18. y="&y";
  19. output;
  20. run;
  21. %mend;
  22. proc fcmp outlib=work.funcs.funs;
  23. function cut(x,y,out $);
  24. rc = run_macro('cut', x, y, out);
  25. return (rc);
  26. endsub;

  27. options cmplib = work.funcs;

  28. data _null_;
  29. set task;
  30. rc = cut(x,y,out);
  31. run;
复制代码
Practice Is The Best Teacher!

藤椅
coximo07 发表于 2013-11-18 20:26:52
zhou.wen 发表于 2013-11-18 16:47
谢谢你,果然厉害。有个问题:生成的data1-90里面都只有x,y两个变量,没有我宏命令里面产生的变量youdex, s1, s2, n, 以及ColPercent等,不知道怎么解决

板凳
coximo07 发表于 2013-11-18 20:29:59
zhou.wen 发表于 2013-11-18 16:47
谢谢你,果然厉害。有个问题:生成的data1-90里面都只有x,y两个变量,没有我宏命令里面产生的变量youdex, s1, s2, n, 以及ColPercent等,不知道怎么解决

报纸
coximo07 发表于 2013-11-18 20:39:04
zhou.wen 发表于 2013-11-18 16:47
RC全是 0

地板
zhou.wen 发表于 2013-11-18 20:51:20
coximo07 发表于 2013-11-18 20:29
谢谢你,果然厉害。有个问题:生成的data1-90里面都只有x,y两个变量,没有我宏命令里面产生的变量youdex, ...
因为没原数据,我给的是demo
你把宏cut修改成你需要的就好了
Practice Is The Best Teacher!

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

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