首页 > 解决方案 > 缺失的数值转换为字符

问题描述

我有一个数据集,它来自一个同时具有数值和字符值的变量。我必须转换那些有数字的并将它们用于计算,然后将它们返回到字符,以便我可以将它们附加回字符。在附加它们之后,其中一些缺少指定为 (.) 的值,我想使用另一个名为 status 的变量来覆盖它,该变量具有 Yes 或 No 作为值。

我现在的挑战是如何识别那些拥有 . 作为缺失值并用状态覆盖它们。

我努力了

proc sql;
create table Track as 
select *,
case when acct in (' ','.') then status
else acct
from Acct_table;
quit;

也试过

case when acct is null then status

但上述任何一项似乎都不起作用。

标签: sas

解决方案


句点很可能不在字符串的第一个字符中。如果你做了

acct = put(acct_num,10.);

然后字符变量将有 9 个空格,然后是句点。

如果你这样做了:

acct = acct_num;

然后 SAS 将使用 BEST12 进行隐式转换。格式,因此将有 11 个前导空格。

所以改变你的测试。

case when left(acct) in (' ','.') then 

推荐阅读