楼主: dxystata
873 4

30论坛币 %scan出错 [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
182304 个
通用积分
15205.6031
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
291157 点
帖子
5375
精华
1
在线时间
13478 小时
注册时间
2006-6-21
最后登录
2024-4-26

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

30论坛币
  1. %macro aaa(vlabels=基线 第-7天 第-1天 第3天 试验完成访视,posts=2 3 4 5);
  2. %let vlabel1=%scan(&vlabels,1);
  3. %put &vlabel1;
  4. %local i;
  5. %let i=1;
  6. %do %until (%scan(&posts,&i)=);
  7.         %let post=%scan(&posts,&i);
  8.         %let vlabel=%scan(&vlabels,%eval(&i+1));
  9.         %put &vlabel;
  10.         %let i=%eval(&i+1);
  11. %end;
  12. %mend;
  13. %aaa;
复制代码
输出的结果是:
基线

7天

1天

希望是
基线
第-7天
第-1天
第3天
试验完成访视

最佳答案

prince315 查看完整内容

%macro aaa(vlabels=基线 第-7天 第-1天 第3天 试验完成访视,posts=2 3 4 5); %let vlabel1=%scan(&vlabels,1,%str( )); %put &vlabel1; %local i; %let i=1; %do %until (%scan(&posts,&i)=); %let post=%scan(&posts,&i); %let vlabel=%scan(&vlabels,%eval(&i+1),%str( )); %put &vlabel; %let i=%eval(&i+1); %end; %mend; %aaa; 输出结果: 基线 第-7天 第-1天 第3天 试 ...
关键词:30论坛币 0论坛币 scan 论坛币 labels
沙发
prince315 在职认证  发表于 2016-11-20 20:35:09 |只看作者 |坛友微信交流群
%macro aaa(vlabels=基线 第-7天 第-1天 第3天 试验完成访视,posts=2 3 4 5);
%let vlabel1=%scan(&vlabels,1,%str( ));
%put &vlabel1;
%local i;
%let i=1;
%do %until (%scan(&posts,&i)=);
        %let post=%scan(&posts,&i);
        %let vlabel=%scan(&vlabels,%eval(&i+1),%str( ));
        %put &vlabel;
        %let i=%eval(&i+1);
%end;
%mend;
%aaa;

输出结果:
基线
第-7天
第-1天
第3天
试验完成访视

code部分只是在scan部分设定分隔符固定为‘ ’,看之前结果,应该‘-’也被当作连字符,从而被识别成分隔符

使用道具

藤椅
dxystata 发表于 2016-11-21 07:33:10 |只看作者 |坛友微信交流群
昨晚忘了设置论坛币

使用道具

板凳
dxystata 发表于 2016-11-21 10:36:41 |只看作者 |坛友微信交流群
继续求助!

使用道具

报纸
sniperhgy 发表于 2016-11-21 11:02:02 |只看作者 |坛友微信交流群
请试试我的代码:
  1. %macro aaa(vlabels=基线 第-7天 第-1天 第3天 试验完成访视,posts=2 3 4 5);
  2. %let vlabel1=%scan(&vlabels,1);
  3. %put &vlabel1;
  4. %local i;
  5. %let i=1;
  6. %do %until (%scan(&posts,&i)=);
  7.         %let post=%scan(&posts,&i,%str( ));
  8.         %let vlabel=%scan(&vlabels,%eval(&i+1),%str( ));
  9.         %put &vlabel;
  10.         %let i=%eval(&i+1);
  11. %end;
  12. %mend;
  13. %aaa;
复制代码
已有 1 人评分经验 论坛币 热心指数 收起 理由
prince315 + 20 + 10 + 1 热心帮助其他会员

总评分: 经验 + 20  论坛币 + 10  热心指数 + 1   查看全部评分

使用道具

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

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

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

GMT+8, 2024-4-27 07:50