SAS:将字符变量转换为数字,如果输入的某些字段只有 0,则保留全 0

SAS: convert a character variable to numeric, keep all 0's if the input has some fields with only 0's

Objective: 在 sas

中使用 proc sql 将字符变量转换为数字

条件:

例如:

table 有一个变量如下:

'00000000'
'00000000'
'00000001'
'20170617'
'20151201'

预期输出是一个变量:

00000000
00000000
00000000
00000001
20170617
20151201

我试过了:

PROC SQL;
CREATE TABLE AAA AS
SELECT input(field,z8.) as field_new
FROM input_table
QUIT;

但我得到了这个不想要的结果:

0
0
0
00000001
20170617
20151201

数字 0 和数字 000 之间没有区别。如果您希望数字以前导零打印,请将 Z 格式附加到变量。

让我们制作一个带有字符变量的示例数据集。

data have ;
  length str  ;
  input str @@;
cards;
0 00000000 1 00000001 20170617 20151201
;

因此要将字符串转换为数字,请使用 INPUT() 函数。使用 FORMAT 语句附加格式以控制其打印方式。

data want ;
 set have;
 num = input(str,F8.);
 format num z8.;
run;

或者在 SQL 语法中。

proc sql ;
create table want as
  select
    str
  , input(str,F8.) as num format=z8.
  from have
;
quit;

结果: