缺少具有特定变量的if条件的输出值

时间:2017-08-06 08:59:26

标签: if-statement sas missing-data

data tt;
input init $ ht wt sex $ time @@;
if ht=. then short=' ';
else if ht<170 then short='y';
else short='n';
if wt=. then heavy=' ';
else if wt<80 then heavy='y';
else wt='n';
cards;
qqq 160.4 60.3 m 1 ewe 167.4 81.5 f 3 aqw 168.0 79.34 f 6
ccc 181.4 87.7 m 19 
;run;

proc print data=tt;
run;





output s like  this
init ht     wt    sex time short heavy
qqq  160.4  60.3  m   1    y     y 
ewe  167.4  .     f   3    y
aqw  168.0  79.34 f   6    y     y     
ccc  181.4  .     m   19   y`

我不知道为什么wt缺少值。当我放if wt>80时 然后wt(60.3 and 79.34)将丢失,81.587.7将显示在输出中。

1 个答案:

答案 0 :(得分:0)

当你查看日志时,是否有一个注释说“创建了缺失值......”并且可能是关于尝试将字符值转换为数值失败的警告或错误?

请注意第二个IF块的ELSE语句:

if wt=. then heavy=' ';
else if wt<80 then heavy='y';
else wt='n';

应该是else heavy='n';。如上所述,它试图将字符值'n'分配给数字变量wt。 SAS会尝试将'n'转换为数值,当失败时,它会向日志发出警告或错误并将其转换为数字缺失值。