2016-08-29 44 views

回答

1

只是想與大家分享的正則表達式的附加解決方案:

data have; 
input x; 
datalines; 
1 
11 
12 
111 
1111 
1121 
99999999 
9999990 
; 
run; 

data want; 
set have; 
if PRXMATCH("/\b1+\b|\b2+\b|\b3+\b|\b4+\b|\b5+\b|\b6+\b|\b7+\b|\b8+\b|\b9+\b|\b0+\b/",x); 
run; 
2

我會像這樣的東西去了。

認識到SAS不會在數字中存儲前導0,所以您示例中的最後一個將會通過 - 即0不會顯示。

這將數字轉換爲字符串,然後比較字符串中的單個字符。根據需要更改put語句中的格式。

另請注意,小數點會失敗,因爲.將與數字進行比較。如果您需要這些通過,請從字符串中刪除.

data have; 
input x; 
datalines; 
1 
11 
12 
111 
1111 
1121 
99999999 
09999999 
1.11 
; 
run; 

data test; 
set have; 
pass = 1; 
format temp $32.; 
temp = strip(put(x,best32.)); 
do i=1 to length(temp)-1; 
    pass = pass and (substr(temp,i,1) = substr(temp,i+1,1)); 
    if ^pass then leave; 
end; 
drop temp i; 
run; 
+0

您可以通過小數轉換爲空間和壓縮繞過十進制錯誤:TEMP =壓縮(tranwrd(條(放(X, best32。)),「。」,「」)); – superfluous

+0

我修改了毫無意義的最後一個例子。 – TechnoCore

+0

@TechnoCore,在上面的代碼中可以正常失敗。如果這回答你的問題,請接受答案。 – DomPazz

相關問題