SAS数字到字符转换?

时间:2014-06-08 18:04:31

标签: sas

当我们将数字转换为字符时,我们应该使用如下的数字格式

data test ; 
prodID = 001 ;
result = put(prodID , 1.) ;
run ; 

proc print ;
run ; 

我还尝试使用字符格式$1.,它也有效

data test ; 
prodID = 001 ;
result = put(prodID , $1.) ;   *I am using $1. here ; 
run ; 

proc print ;
run ; 

问题是为什么第二个代码有效?它不应该工作。我们应该使用数字或字符格式还是无关紧要?

2 个答案:

答案 0 :(得分:3)

您会收到第二个代码的警告:

  

警告:变量prodID已被定义为数字。

那是因为您正在将字符格式应用于数字变量 但put函数的结果是始终字符。

答案 1 :(得分:0)

将字符变量转换为数字变量,请使用INPUT()函数(使用信息格式)。

newvar_num = INPUT(oldvar_char, informat)

INPUT()函数类似于使用INPUT语句读取外部数据。该信息告诉SAS如何读取数据,应将其读取为数字。从字符转换为数字时,信息格式必须是您要转换为的类型,即数字。

将数字变量转换为字符变量,请使用PUT()函数(使用格式)。

newvar_char = PUT(oldvar_num, format)

PUT()函数类似于使用PUT语句写出数据。该格式告诉SAS如何输出或存储数据。在PUT()函数中,格式必须与源变量(oldvar_num)的类型相同,因此必须为数字。

PUT()函数也可以用于将字符变量转换为具有字符格式的另一个字符变量。参见示例A和C:https://blogs.sas.com/content/sgf/2015/05/01/converting-variable-types-do-i-use-put-or-input/

INPUT()函数的源变量必须始终为字符,输出可以为字符或数字。 PUT()函数的输出始终是字符,输入可以是字符或数字。

有关信息和格式的详细说明,请参见:https://libguides.library.kent.edu/SAS/Informats-Formats