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.); |
您可以使用
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.); |