楼主: dxystata
1091 1

如何得到宏变量z [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
182600 个
通用积分
15207.3903
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
291628 点
帖子
5382
精华
1
在线时间
13485 小时
注册时间
2006-6-21
最后登录
2024-5-3

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

10论坛币
  1. %let x=a;
  2. %let y=1 2 4 5;

  3. %let x=a0;
  4. %let y=1 2 4 5;
复制代码
两种情况如何得到宏变量z为a1 a2 a4 a5

关键词:let 如何
沙发
yongyitian 发表于 2014-3-6 12:18:21 |只看作者 |坛友微信交流群
  1. /* loop needs to be used inside data step or macro */
  2. %let x=a;
  3. %let y=1 2 4 5;

  4. %let x=a0;
  5. %let y=1 2 4 5;

  6. %let xx=%substr(&x,1,1);
  7. %let z =&xx%scan(&y,1) &xx%scan(&y,2) &xx%scan(&y,3) &xx%scan(&y,4);

  8. %macro aaa(x=, y=);
  9.   %global zz;
  10.   %let xx = %substr(&x,1,1);
  11.   %let nz = %sysfunc(countw(&y));
  12.   %do i=1 %to &nz;
  13.      %let zz=&zz &xx%scan(&y, &i);
  14.    %end;
  15.    %put zz=&zz;
  16. %mend;
  17. %aaa(x=b0, y=1 2 5 6)

  18. data _null_;
  19.       length z $20;
  20.          nz = countw("&y");
  21.        do i = 1 to nz;
  22.           z = catx(' ', z, cats(substr("&x",1,1), scan("&y", i)));
  23.       end;
  24.    call symput('zzz', z);
  25. run;
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 01:04