楼主: 画纱无形
21210 8

有关Substr 函数 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

41%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
315 点
帖子
104
精华
0
在线时间
88 小时
注册时间
2012-4-14
最后登录
2023-12-19

楼主
画纱无形 发表于 2013-8-10 21:52:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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的起始字符,求大虾解释;最好能具体解释下这个函数。





二维码

扫码加我 拉你入群

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

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

关键词:SUBSTR subs SUB UBS Data

沙发
不正经 发表于 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;
即变成我们所理解的情况。
已有 1 人评分论坛币 学术水平 收起 理由
凡尘梦1990 + 5 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1   查看全部评分

板凳
画纱无形 发表于 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
谢谢了
不谢!解决问题是不是能得论坛币呢?

地板
loginon 发表于 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;

7
3232442590 发表于 2015-10-6 20:44:11
说得好,赞一个

8
cswang1992 发表于 2015-12-6 21:03:41
用compress()也可以;
data _null_;
        a=10600001;
        z1=substr(a,7,1);
        z2=substr(a,5,1);
        z3=substr(compress(a),7,1);
        z4=substr(compress(a),5,1);
        put z1=  z2=  z3=  z4=  ;
run;
用compress先去掉空格,再截取。

9
Tigflanker 发表于 2015-12-7 08:53:22
  1. data _null_;
  2.   y = 10600001;
  3.   z = substrn(y,3,1);
  4.   put z = ;
  5. run;
复制代码

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 19:03