检查数值是否仅包含一种数字

时间:2016-08-29 14:55:57

标签: sas

如果数字值仅由一种数字组成,是否有一种优雅的方式来检入SAS Base?

示例:

1       -> Yes
11      -> Yes
111     -> Yes
1111    -> Yes
1121    -> No
9999999 -> Yes
9999990 -> No

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;