全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2944 2
2019-05-04
程序如下所示,其中字符串s='浙江恒逸物流100%股权,宁波恒逸物流100%股权'; 我想从字符串中获取两个百分数并拼接在一起(中间用空格隔开)。我写的程序如下所示,其中输出的y是正确的,但不知道为什么输出的x 不是我要的两个变量的拼接,请问为什么?求指导,不胜感激!

%let z = substr(s,max(1,pos-8),min(9,length(s)) );

data x;
        s='浙江恒逸物流100%股权,宁波恒逸物流100%股权';
        pos=0;
        x=" ";
        do i=1 to 3;
                pos= find(s, '%', pos+1);
                put pos;
                if pos ne . ;
                        y=compress(&z, '0123456789.%-','k');
                        put y;
                        x=x||","||y;
                        put x;
        end;

run;

二维码

扫码加我 拉你入群

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

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

全部回复
2019-5-5 13:34:54
X的长度没有实现定义。X=" "第一次出现时,变量X的长度定义为1,于是后面就发生了截断。

Y的结果正确是因为compress函数产生的变量长度有默认值。

在9.4中,COMPRESS(source <, characters> <, modifier(s)>) 的默认长度等于source的长度
二维码

扫码加我 拉你入群

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

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

2019-5-5 19:47:44
孤单的我们 发表于 2019-5-5 13:34
X的长度没有实现定义。X=" "第一次出现时,变量X的长度定义为1,于是后面就发生了截断。

Y的结果正确是因 ...
太牛了,你的回答是对的。事实上后来 我发现这个问题了,我在x 出现之前定义了 length x $20. 就搞定了。谢谢你的解答。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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