楼主: andrea1983
4438 16

[原创博文] 求助大虾 [推广有奖]

11
link7time 发表于 2012-2-14 10:49:42
新手围观学习的

12
andrea1983 发表于 2012-2-14 10:53:08
zhangzachary 发表于 2012-2-14 10:32
你没有data step,SAS不知道这个是变量名,只是一个简单的文本内容,而且不能用eval对文本做操作。你稍等 ...
崇拜ING

13
zhangzachary 发表于 2012-2-14 10:53:48
andrea1983 发表于 2012-2-14 10:29
就是这样的,想比较变量里面的数值,直接写%if sum_drugs_&y.M_sum_drugs_&x.M=1 or sum_drugs_&y.M_sum_ ...
  1. %macro aa(N=);
  2. %do i=&N %to 7;
  3.     %let x=%eval(&N*3);
  4.     %let y=%eval((&N+1)*3);
  5. data a;
  6. set a;
  7. sum_drugs_&y.M_sum_drugs_&x.M=ceil(ranuni(0)*2);
  8. B_B_&x.M_c=ceil(ranuni(0)*2);
  9. B_B_&y.M_c=ceil(ranuni(0)*2);
  10. PGA_&x.M_c=ceil(ranuni(0)*2);
  11. PGA_&y.M_c=ceil(ranuni(0)*2);
  12. Miotic_&x.M_c=ceil(ranuni(0)*2);
  13. Miotic_&y.M_c=ceil(ranuni(0)*2);
  14. CAI_&x.M_c=ceil(ranuni(0)*2);
  15. CAI_&y.M_c=ceil(ranuni(0)*2);
  16. Diamox_&x.M_c=ceil(ranuni(0)*2);
  17. Diamox_&y.M_c=ceil(ranuni(0)*2);
  18. Adren_&x.M_c=ceil(ranuni(0)*2);
  19. Adren_&y.M_c=ceil(ranuni(0)*2);
  20. run;
  21. %end;
  22. %mend;



  23. %macro drugpoint(N=);
  24. %do i=&N %to 7;
  25.     %let x=%eval(&N*3);
  26.     %let y=%eval((&N+1)*3);
  27.     %let drugs_ab=sum_drugs_&y.M_sum_drugs_&x.M;
  28.   data a;
  29.     set a;
  30.    if &drugs_ab=1 or &drugs_ab=-1  then do;
  31.     if B_B_&x.M_c ~= B_B_&y.M_c then IOP_B_B=IOP_&y.M-IOP_&x.M;
  32. else if  PGA_&x.M_c ~= PGA_&y.M_c then IOP_PGA=IOP_&y.M-IOP_&x.M;
  33. else if  Miotic_&x.M_c ~= Miotic_&y.M_c then IOP_Miotic=IOP_&y.M-IOP_&x.M;
  34. else if  CAI_&x.M_c ~= CAI_&y.M_c then IOP_CAI=IOP_&y.M-IOP_&x.M;
  35. else if  Diamox_&x.M_c ~= Diamox_&y.M_c then IOP_Diamox=IOP_&y.M-IOP_&x.M;
  36. else if  Adren_&x.M_c ~= Adren_&y.M_c then IOP_Adren=IOP_&y.M-IOP_&x.M;
  37.    end;
  38.   run;
  39. %end;
  40. %mend  drugpoint;

  41. data a;
  42. a=1;
  43. run;

  44. %aa(N=1)
  45. %drugpoint(N=1)
复制代码
已有 1 人评分论坛币 热心指数 收起 理由
eijuhz + 100 + 2 热心帮助其他会员

总评分: 论坛币 + 100  热心指数 + 2   查看全部评分

寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

14
zhangzachary 发表于 2012-2-14 10:54:23
我随便写了个,这个就不会有error出现啦
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

15
andrea1983 发表于 2012-2-14 11:54:22
zhangzachary 发表于 2012-2-14 10:54
我随便写了个,这个就不会有error出现啦
哈哈,高人!在data裏面確實可以了。

16
andrea1983 发表于 2012-2-14 15:44:45
zhangzachary 发表于 2012-2-14 10:54
我随便写了个,这个就不会有error出现啦
我高兴太早,发现这样写,循环语句后面的结果就把前面的覆盖了,最后只看到最后一次的循环结果了。

17
zhangzachary 发表于 2012-2-14 15:52:20
andrea1983 发表于 2012-2-14 15:44
我高兴太早,发现这样写,循环语句后面的结果就把前面的覆盖了,最后只看到最后一次的循环结果了。[sweat ...
把上面code里第31行的data a 变成 data a&i ,这样可以得到 a1-a7 7个dataset,然后可以根据你的需要来使用
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

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

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