SAS数字到字符转换?

SAS数字到字符转换?,sas,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 ; 问题是第

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

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 ; 

问题是第二个代码为什么起作用?这是不应该起作用的。我们应该使用数字或字符格式还是不重要?

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

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

这是因为您正在对数值变量应用字符格式
但是put函数的结果总是字符

要将字符变量转换为数字变量,可以使用INPUT()函数(使用informats)

函数的作用类似于使用INPUT语句读取外部数据。informat告诉SAS如何读取数据,数据应以数字形式读取。从字符转换为数字时,信息必须是要转换到的类型,因此是数字

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

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

PUT()函数还可用于将字符变量转换为另一个具有字符格式的字符变量。参见示例A和C:

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


关于信息和格式的一个很好的解释可以在这里找到:。

但是我在网上找到了很多使用字符格式的例子:点击完整代码,你会看到
numeric=input(string,8.),因此SAS官方网站将数字格式
8.
应用于
字符串?所以我认为对数值
result=put(prodID,$1.)应用字符格式是合乎逻辑的成功了吗?
输入
输入
功能不是一回事。。。
input
函数有点像
input语句
它将参数读入一列,我确信字符串是由数字组成的,这些数字既可以是字符也可以是数字。顺便说一下,当从字符转换为数字时,我通常只做numeric=string*1。
newvar_num = INPUT(oldvar_char, informat)
newvar_char = PUT(oldvar_num, format)