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;

结果:

enter image description here

以上是关于SAS:将字符变量转换为数字,如果输入的某些字段只有0,则保持全0的主要内容,如果未能解决你的问题,请参考以下文章

如何在SAS(大学)中将char字符转换为日期?

SAS零散知识总结

如何有效地格式化SAS中多列的数据

将货币字符串转换为数字 Drupal Views / PHP

根据输入的字符限制文本字段的长度?

sql语句中怎样将字符类型转换成数字类型