我正在操縱一些字符串變量,並且某些單元格使用子字符串和長度函數返回了意外的值。這些單元格包含字符格式的日期,因爲我們需要在將它們轉換爲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