s**o 发帖数: 374 | 1 有一个variable,是z3 format,其实是两位数加一个leading zero:
018
019
064
087
我现在需要写code check这个variable是不是三个digits,该怎么写呢?
length(compress(put(invid,9.))) 这样不行,zero被去掉了,只count到两个digits。 |
o****o 发帖数: 8077 | 2 变成字符串如何?
digits。
【在 s**o 的大作中提到】 : 有一个variable,是z3 format,其实是两位数加一个leading zero: : 018 : 019 : 064 : 087 : 我现在需要写code check这个variable是不是三个digits,该怎么写呢? : length(compress(put(invid,9.))) 这样不行,zero被去掉了,只count到两个digits。
|
d*********g 发帖数: 349 | 3 最简单的就是把这个variable用字符串的形式读入,然后直接用length
比如试试这个:
data work.one;
in file cards;
input number $;
cards;
17
018
019
0020
;
run;
data work.two;
set work.one;
length=length(compress(number));
run;
proc print data=work.two;
run;
把
17
018
019
0020
换成你自己的数据就行了 |
N***3 发帖数: 801 | 4 试一下
data check;
input id 2.;
id2=put(id,z3.);
check=(length(id2)=3);
cards;
18
19
64
87
; |
s**o 发帖数: 374 | 5 试了变成character,第一个digit是zero,就变没了,所以count length是2, 不是3.
【在 o****o 的大作中提到】 : 变成字符串如何? : : digits。
|
s**o 发帖数: 374 | 6 这个办法不行,我试过了加进去一个四位数,因为put(id,z3.),最后count出来是3,
这样error就找不到了
【在 N***3 的大作中提到】 : 试一下 : data check; : input id 2.; : id2=put(id,z3.); : check=(length(id2)=3); : cards; : 18 : 19 : 64 : 87
|
N***3 发帖数: 801 | 7 还有四位数?改了一下。如果018也算3位,那就改成<=3.
data check;
input id 5.;
id2=put(id,z3.);
check=(length(compress(input(id2,3.)))=3);
cards;
11818
9019
111
64
87
123
12345
; |