请选择 进入手机版 | 继续访问电脑版
楼主: HannahLove
6183 15

SAS base 后天考试,向前辈请教123中三道题。谢谢! [推广有奖]

HannahLove 发表于 2015-1-7 04:12:39 |显示全部楼层 |坛友微信交流群
dkyyy 发表于 2015-1-5 13:54
用SAS 9.3运行第72题结果是(结果中就带空格):Ipswich         ; England

也不是答案啊
下面的解释很好,谢谢你帮我运行程序。

使用道具

HannahLove 发表于 2015-1-7 04:13:13 |显示全部楼层 |坛友微信交流群
星落荒原 发表于 2015-1-6 06:26
第72题里面D逗号前面应该是有几个空格的,因为city长度应该等于first长度,两个感叹号和||是一样的,表示
第 ...
很清晰,谢谢!

使用道具

野亡灵 学生认证  发表于 2015-11-4 17:02:50 |显示全部楼层 |坛友微信交流群
72题:首先,substr(First,1,7)的功能是对于First字符串,从第1个字符开始,截取7个字符。注意substr()函数返回值的长度是和First的长度是一样的,也就是说City和First的长度都是16,City='Ipswich         ',注意后面用空格补充,答案D是逗号前有一个空格,应该是有8个空格的。(!!和||的作用是一样的,都是连接字符串)
73题:从72题可以看出,substr(First,1,7)长度为16,', '长度为2,’England'长度为7,加起来长度是25。
74题:scan(title,3,' ,')的作用是根据' ,'的第一个字符(即空格' ')把title切分,将第3个切分块作为返回值。此处用空格切分后第3个切分块缺失是of。另外需要注意的是,scan()函数的返回值,长度都是200!

使用道具

derekhsuan 发表于 2015-11-5 08:23:49 |显示全部楼层 |坛友微信交流群
re: Q74
因为delimiter中使用了 空格 或者逗号,所以,凡是遇到空格的,或者逗号的,都是一个分界点。

使用道具

foocares 发表于 2017-4-18 05:40:04 |显示全部楼层 |坛友微信交流群
野亡灵 发表于 2015-11-4 17:02
72题:首先,substr(First,1,7)的功能是对于First字符串,从第1个字符开始,截取7个字符。注意substr()函数 ...
这里我很疑惑,为什么substr()返回值长度要跟原字符first一样长?
文档里是这么定义的:
SYNTAX
The SUBSTR function has three arguments:
SUBSTR(SOURCE, POSITION, N)
The function returns N characters, beginning at character number
POSITION from the string SOURCE.
♦ SOURCE—This is the larger or reference string. It can be a
variable or a string of characters.
♦ POSITION—This value is a positive integer and references the
starting point to begin reading the internal group of characters.
♦ N—This value is a positive integer and references the number
of characters to read from the starting point POSITION in the
field SOURCE.

所以,substr返回的长度应该就是N(如果N被指定的话)。具体到这个例子里,City的长度就该是7啊。
另一个例子可见于little sas book上83页3.3章表里给出的范例:
SUBSTR
a='(916)734-6281';
x=SUBSTR(a,2,3);
预测结果是:
x='916'
这里得到返回的x值也只有三位,而不是916后面一路把空格全补齐到原长打止啊。

求大佬解惑!

使用道具

foocares 发表于 2017-4-18 06:28:46 |显示全部楼层 |坛友微信交流群
此刻我的内心是崩溃的,充斥着大写的懵逼。为了验证,我自己写了一小段丢到SAS里去跑了一下,果真返回是25,然鹅,我的确完全不懂,为啥substr刚出来看着长度确实为7,可一用到拼接时为啥就要补齐到16向源字符串看齐?

data _null_;
        a_char = 'Ipswich, England';  /*原字符串长度16*/
           b_char = substr(a_char,1,7);
           clength1 = length(b_char);
           c_char = b_char!!', '!!'England';
           clength2 = length(c_char);
           put b_char= c_char= clength1= clength2=;
run;

我得到的运行结果:
b_char=Ipswich c_char=Ipswich         , England clength1=7 clength2=25

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 08:26