如何在SAS中使用PUT和INPUT数字

时间:2019-03-05 23:10:46

标签: types sas format

我对SAS表中的某些列使用PUT和INPUT进行转换时遇到问题。

我尝试格式化:

               ###I need:          Using: 
tipdoc='01' -> tipdoc=1            input(tipdoc, 1.)
coddoc=1234 -> coddoc=00001234     put(coddoc, z8.) 

但是,我得到这个结果:

tipdoc=0
coddoc=       .

你有什么主意吗? 谢谢。

2 个答案:

答案 0 :(得分:3)

该信息告诉INPUT如何解释输入值。 1.仅选择0位,您将获得0数字。 coddoc已经是一个数字,只需要一种用于显示前导零的格式,或者您可能想要一个带有前导零的字符变量。

data want;

tipdoc='01';
coddoc=1234;

tipdoc_num = input(tipdoc,best12.);
format coddoc z8.;

coddoc_char = put (coddoc,z8.);

run;

ods listing;
proc print data=want;
run;

--------

                             tipdoc_    coddoc_
Obs    tipdoc      coddoc      num        char

 1       01      00001234       1       00001234

答案 1 :(得分:1)

您使用格式将值转换为文本。您使用INFORMAT将文本转换为值。将FORMAT与FORMAT和PUT语句以及PUT()(以及PUTN()和PUTC())函数一起使用。将INFORMATS与INFORMAT和INPUT语句以及INPUT()(以及INPUTC()和INPUTN())函数一起使用。

如果TIPDOC是一个字符串,则使用的INFORMAT宽度至少应等于该变量的最长值。为了安全起见,您可以只使用所使用的信息所允许的最大宽度。

numberic_tipdoc = input(tipdoc,32.);

如果CODDOC是一个数字,则可以使用一种格式来显示前导零的值。或使用PUT()函数创建具有格式化值的字符变量。

format coddoc z8. ;
character_coddoc = put(coddoc, z8.);

如果CODDOC的转换值显示为句点,则其值为缺失值。这就是SAS显示缺少数字值的方式。您可以使用MISSING选项告诉SAS使用其他字符来显示缺失值。例如,要将其显示为空格,请使用命令

options missing=' ';

在使用PUT()函数或使用其他方法打印值之前。

或者您可以只测试程序是否缺少CODDOC,然后为新变量使用其他值。

character_coddoc = put(coddoc, z8.);
if missing(coddoc) then character_coddoc='missing';