关于sas:变换开头为0值的数字


Transform numbers with 0 values at the beginning

我有以下数据集:

1
2
3
4
5
6
7
8
DATA survey;
 INPUT zip_code number;
 DATALINES;
 1212 12
 1213 23
 1214 23
 ;
 PROC PRINT; RUN;

我想将此数据链接到另一个表,但问题是另一个表中的数字以以下格式存储:0012、0023、0023。

所以我正在寻找一种方法来执行以下操作:

  • 检查号码有多长
  • 如果长度 = 1,则在开头添加 3 个 0 值
  • 如果长度 = 2,则在开头添加 2 0 个值

有什么想法可以让这个工作正常吗?


数字是数字,所以如果另一个表的字段是数字,那么你不需要做任何事情。 13 = 0013 = 13.00 = ....

如果另一个表实际上有一个字符变量,那么你需要转换一个或另一个。

1
2
char_number = put(number, Z4.);
number = input(char_number, 4.);

您可以使用 z#. 格式来完成此操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DATA survey;
 INPUT zip_code number;
 DATALINES;
 1212 12
 1213 23
 1214 23
 9999 999
 8888 8
 ;

data survey2;  
    set survey;
    number_long = put(number, z4.);
run;


如果你需要它是四个字符长,那么你可以这样做:

1
want = put(input(number,best32.),z4.);