全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2117 7
2016-12-03
写了一个宏。希望可以将一个用空格分开的字符串(例如“x1 x2 x6”)中的各个子字符串提取出来,并批量赋值给新变量。
结果运行的时候报错,说I 不能被解析。哪位帮忙看下什么地方出错了?

%macro test(varlist);

data test;
  x=&varlist;
  count1=count(x,' ');
  do i=1 to count1;
  x&i=scan(x,i,' ');
  output;
  i+1;
  end;
  run;

%mend;
%test('x1 x2 x6');

WARNING: 没有解析符号引用 I。




二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-4 00:27:32
manchengfu 发表于 2016-12-3 15:13
写了一个宏。希望可以将一个用空格分开的字符串(例如“x1 x2 x6”)中的各个子字符串提取出来,并批量赋值 ...
你的i不是宏变量,x&i中的i无法解析。
二维码

扫码加我 拉你入群

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

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

2016-12-4 08:32:39
Strive、 发表于 2016-12-4 00:27
你的i不是宏变量,x&i中的i无法解析。
data步里不是可以不用定义的吗?
二维码

扫码加我 拉你入群

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

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

2016-12-4 08:46:43
你不定义,SAS如何知道i 是一个宏变量呢。
可以用如下定义。
%do i=1 %to count1;
  x&i=scan(x,i,' ');
  output;
  %end;
没跑过,你试试
二维码

扫码加我 拉你入群

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

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

2016-12-4 15:38:32
Strive、 发表于 2016-12-4 08:46
你不定义,SAS如何知道i 是一个宏变量呢。
可以用如下定义。
%do i=1 %to count1;
你这样一弄,count1不识别了
二维码

扫码加我 拉你入群

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

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

2016-12-4 23:30:36
manchengfu 发表于 2016-12-3 15:13
写了一个宏。希望可以将一个用空格分开的字符串(例如“x1 x2 x6”)中的各个子字符串提取出来,并批量赋值 ...
我试了下,估计是宏循环不能用普通变量的原因。   但是我把count1用宏变量负值方法之后,有问题。sysfunc(count(x,\"\"));跑出来是0。换个函数还求?或者换个方法,一维数组?
不过我还是比较感兴趣这个方法怎么解决,楼主知道什么其他函数吗,我一时半会想不起来了。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群