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)