全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1555 2
2020-02-18

请教论坛大神,有如下程序:
data;
y=10600001;
z=substr(y,7,6);
put z=;
run;
疑问:z值应该是从y的第7位开始提取,往后提6位,这个怎么解释?往后没有6位了是否应该截断,为啥输出结果为z=600001 ?

二维码

扫码加我 拉你入群

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

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

全部回复
2020-2-18 18:02:19
substr()函数是字符处理函数,其输入参数应该是字符型变量。当前例子中,给定的输入参数y是一个数值型变量。因此SAS自动的进行了变量的类型转换,将y变成了字符型变量,默认有12个字节的长度,数字右对齐,前面用空格补齐,也就是'□□□□10600001'。因此substr(y,7,6)等同于substr('□□□□10600001',7,6),得到的结果即为“600001”。

补充,若确实要对数值型的变量做截断处理,可以考虑使用cats()函数去除补齐的空格。例如:substr(cats(y),7,6)
二维码

扫码加我 拉你入群

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

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

2020-2-22 11:31:28
whymath 发表于 2020-2-18 18:02
substr()函数是字符处理函数,其输入参数应该是字符型变量。当前例子中,给定的输入参数y是一个数值型变量。 ...
懂了懂了,非常非常感谢!!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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