全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
21105 8
2013-08-10
data ;y=10600001;z=substr(y,7,1);put z=;run; z的值是6;data ;y=10600001;z=substr(y,5,1);put z=;run; z的值是1;
我现在不明白substr的第二参数如本例中的7和5是怎么开始选择y的起始字符,求大虾解释;最好能具体解释下这个函数。





二维码

扫码加我 拉你入群

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

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

全部回复
2013-8-10 22:27:28
SUBSTR函数分为两种形式,一种是SUBSTR(variable, position<,length>)=characters-to-replace是将从  position开始长度为length的字符串用characters-to-replace代替;另一种<variable=>SUBSTR(string, position<,length>) ,是从position开始从string中提取长度为length的字符串,这两种情况均是在字符串情况下,如果string为数值列,即楼主的情况,substr函数时会自动把数字变量转为字符变量,不过需要注意的是转化为的字符变量采用的是best12.格式。
所以改为
data a;
y='10600001';
z=substr(y,7,1);
put z=;
run;
data b;
y='10600001';
z=substr(y,5,1);
put z=;
run;
z的值均为0.
二维码

扫码加我 拉你入群

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

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

2013-8-10 22:32:20
或者改为
data a;
y='10600001';
z=substr(y,7,1);
put z= format$8.;
run;
data b;
y='10600001';
z=substr(y,5,1);
put z= format$8.;
run;
即变成我们所理解的情况。
二维码

扫码加我 拉你入群

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

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

2013-8-12 17:28:09
不正经 发表于 2013-8-10 22:32
或者改为
data a;
y='10600001';
谢谢了
二维码

扫码加我 拉你入群

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

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

2013-8-12 21:19:48
画纱无形 发表于 2013-8-12 17:28
谢谢了
不谢!解决问题是不是能得论坛币呢?
二维码

扫码加我 拉你入群

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

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

2013-8-12 22:18:58
用 trim() 和 left()
data a;
y=10600001;
z1 = substr(trim(left(y)),7,1);
z2 = substr(trim(left(y)),5,1);
z3 = substr(trim(left(y)),3,1);
run;
proc print; run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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