楼主: dxystata
1630 1

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

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

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

楼主
dxystata 发表于 2014-3-5 20:18:38 |AI写论文
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
拉您进交流群
GMT+8, 2026-1-21 18:59