如果数字值仅由一种数字组成,是否有一种优雅的方式来检入SAS Base?
示例:
1 -> Yes
11 -> Yes
111 -> Yes
1111 -> Yes
1121 -> No
9999999 -> Yes
9999990 -> No
答案 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;