全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3901 7
2017-12-10
请问,将药物名(均为中文字符,且其中部分包含小括号等符号),放入了一个宏变量,想用scan以及str函数一个个提取出来,但是%str无法识别,具体error见下图,请问是怎么回事呢,求赐教! 微信图片_20171210171943.png 微信图片_20171210171917.png 微信图片_20171210171835.png
二维码

扫码加我 拉你入群

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

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

全部回复
2017-12-10 17:28:26
微信图片_20171210172738.png
这是部分药物名  跪求大神赐教!
二维码

扫码加我 拉你入群

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

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

2017-12-11 09:53:12
在data步里面实现即刻
data   tmp;
     aaa='天晴甘平/阿奇霉素/.........';
     n=countw(aaa,'/');
     do i=1 to n;
         bbb=scan(aaa,i,'/');
     end;
run;
二维码

扫码加我 拉你入群

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

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

2017-12-12 10:18:26
你弄复杂了吧,直接从原始数据集建宏变量 &cmlist1 - &cmlist&&n;

复制代码
二维码

扫码加我 拉你入群

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

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

2017-12-12 14:00:47
流水不朽 发表于 2017-12-11 09:53
在data步里面实现即刻
data   tmp;
     aaa='天晴甘平/阿奇霉素/.........';
感谢!但是我想要一个个读取,然后在宏里面对数据集进行set时,可以用这个语句: if 变量名= 某某药名来筛选使用不同药物的部分。在data步中的话好像不太方便......还是很感谢提供了这个思路!
二维码

扫码加我 拉你入群

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

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

2017-12-12 14:40:49
lovexialulu 发表于 2017-12-12 10:18
你弄复杂了吧,直接从原始数据集建宏变量 &cmlist1 - &cmlist&&n;
哇!谢大侠替我悬崖勒马。想要再问一下!我用这个思路跑了之后,每个cmlist就是一个药物名了,可是我跑以下程序的时候,报了warning,说是字符过长,可是一个药物名是不会超过260个字节的啊,很迷。
%macro cm();

%DO J= 1 %TO 5;

data cm&j.;
merge fas poweredc.cm;
by sid;
if cmtrt = "&cmlist&&j" ;
run;

%end;
%mend;
%cm();

WARNING: The quoted string currently being processed has become more than 262 bytes long.  You might have unbalanced  quotation marks.

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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