SAS:将字符变量转换为数字,如果输入的某些字段只有0,则保持全0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAS:将字符变量转换为数字,如果输入的某些字段只有0,则保持全0相关的知识,希望对你有一定的参考价值。
目标:使用sas中的proc sql将字符变量转换为numeric
条件:
- 输入变量的长度为x
- 必须保持每个位置的所有0
- 有几个字段只有0'
例如:
该表有一个变量,具有以下内容:
'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 $8 ;
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;
结果:
以上是关于SAS:将字符变量转换为数字,如果输入的某些字段只有0,则保持全0的主要内容,如果未能解决你的问题,请参考以下文章