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 将字符变量转换为数字
条件:
- 输入变量有 x 长度
- 必须在每个位置保留全 0
- 有些字段只有 0
例如:
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;
结果:
Objective: 在 sas
中使用 proc sql 将字符变量转换为数字条件:
- 输入变量有 x 长度
- 必须在每个位置保留全 0
- 有些字段只有 0
例如:
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;
结果: