数値が1種類の数字で構成されているかどうかを確認するには、エレガントな方法でSAS Baseをチェックしますか?数値に1種類の数字だけが含まれていることを確認してください
例:
1 -> Yes
11 -> Yes
111 -> Yes
1111 -> Yes
1121 -> No
9999999 -> Yes
9999990 -> No
数値が1種類の数字で構成されているかどうかを確認するには、エレガントな方法でSAS Baseをチェックしますか?数値に1種類の数字だけが含まれていることを確認してください
例:
1 -> Yes
11 -> Yes
111 -> Yes
1111 -> Yes
1121 -> No
9999999 -> Yes
9999990 -> No
ただ、正規表現で追加の解決策を共有したい:
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;
私はこのようなものとなるだろう。
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;
あなたがスペースに小数を変換し、圧縮して10進数のエラーを回避することができます:一時=湿布(tranwrd(ストリップ(PUT(X、 best32。)))、 "。"、 "")); – superfluous
無意味な最後の例を修正しました。 – TechnoCore
@TechnoCoreでは、上記のコードで正しく失敗します。これがあなたの質問に答えるなら、答えを受け入れてください。 – DomPazz