我正在操纵一些字符串变量,并且某些单元格使用子字符串和长度函数返回了意外的值。这些单元格包含字符格式的日期,因为我们需要在将它们转换为SAS日期之前进行一些操作,因为它们来自的Excel文件的性质。下面是一个例子:SAS 9.4字符函数 - 为什么一个单元可能返回意外的结果?
HAVE:
OB的_orig
1 4/3
2 12/16
3 1/13
4 6/2
5 3/10
6 5/4
7 10/14
WANT:
OB的_orig _length _sub_1_2
1 4/3 3 4/
2 12/16 5 12
3 1/13 4 1/
4 6/2 3 6/
5 3/10 4 3/
6 5/4 3 5/
7 10/14 5 10
我使用这个代码:
data want;
set have;
_strip=strip(_orig);
_sub_1_2=substr(_strip,1,2);
_length=length(_strip);
run;
这是我得到的。差异是粗体。
OB的_orig _length _sub_1_2
1 4/3 5
2 12/16 5 12
3 1/13 4 1/
4 6/2 3 6/
5 3/10 4 3/
6 5/4 5
7 10/14 5 10
两个这样的情况:SAS计算长度= 5时长度应该= 3。在这两种情况下,对于子衍生的变量的值是空白共。如果我在我的代码中使用compress(),trim()或trimn()而不是strip(),结果是一样的。感谢您提供的任何帮助
完美!不可打印的字符是所有者/用户添加的单元格内换行符。为了使你提供的压缩功能正常工作,我添加了一个额外的逗号:_strip = compress(orig ,,'kw');再次感谢你。 – LRS
很高兴工作。两个逗号都很好。更新了答案。 – Quentin