我一直在研究基本级别的SAS,这是我不理解的问题。
data test;
A='Ipswich, England';
B=substr(A,1,7);
C=B!!';'!!'England';
run;
根据问题,C的值必须是英国伊普斯威奇。
我尝试了代码,我想特别问三件事。
1),为什么可以使用!代替|| ?是!一个不同的串联选项?
2),我得到的结果是伊普斯威奇(Epswich);英国。因此,我不知道逗号是在做什么,而不是smicolon。
3),为什么在伊普斯威奇之后有多余的空间? B不应仅是字母1中A的7个字母吗?就像在我吗?
我正在处理的文本有一些怪异的表情,所以有可能是错字,但我现在不想去那里。
谢谢。
答案 0 :(得分:2)
您可以将!!
用作||
的别名。旧键盘没有|
字符。同样,旧的ASCII / EBCDIC转码器也不总是正确地翻译该字符。
您的代码肯定使用分号而不是逗号。因此,无论是拼写错误还是转录错误都是建议的答案带有逗号的原因。
由于您没有告诉SAS必须猜测变量B
使用的长度。因此,它猜测它应该使用与SUBSTR()函数调用的输入相同的长度。因此,A和B都定义为16个字节长。 ||
运算符不会修剪尾随空格,因此分号是C的第17个字节。
171 data test;
172 A='Ipswich, England';
173 B=substr(A,1,7);
174 C=B!!';'!!'England';
175 put (a b c) (=$quote.);
176 run;
A="Ipswich, England" B="Ipswich" C="Ipswich ;England"
NOTE: The data set WORK.TEST has 1 observations and 3 variables.
内容:
Alphabetic List of Variables and Attributes
# Variable Type Len
1 A Char 16
2 B Char 16
3 C Char 24
答案 1 :(得分:0)
1)过去并不是所有的键盘都有管道。
2)多一处。 27个数据 null ; 28 A ='英格兰伊普斯威奇'; 29 B = substr(A,1,7); 30 C = B !!';'!!'England'; 31 l1 = vlength(a); 32 l2 = vlength(b); 33 l3 = vlength(c); 34 put all ; 35 put'NOTE:'c $ varying。 l3''; 36跑;
3)B的长度默认为SUBSTR参数1的长度。
A=Ipswich, England B=Ipswich C=Ipswich ;England l1=16 l2=16 l3=24 _ERROR_=0 _N_=1
NOTE: **Ipswich ;England**