我有以下一些代码由某人提供,以确定手机号码是否以7开头:
if int(abs(mobile_telephone1)/10**int(log10(abs(mobile_telephone1)))) ne 7
then do .....
这很好用,但是如果缺少值,我会收到大量的错误消息,我想知道是否有办法来抑制这个特定语句的错误消息?
答案 0 :(得分:2)
您无法抑制特定功能(通常)的错误,但您可以在datastep之前禁用它们,然后在
之后重新应用它们options errors=0 ; data xyz ; /* some code */ run ; options errors=25 ;
但是为什么不在没有冒任何错误的情况下更简单地做到这一点......
data xyz ; tel = 7123455678 ; chartel = put(tel,12.) ; if chartel =: '7' then istel = 1 ; run ;
答案 1 :(得分:1)
为了更具体地回答您的问题(尽管Chris的解决方案绝对是可行的方法),您可以使用coalesce
函数。
if log10(coalesce(mobile_telephone1,1)) ...
Coalesce返回第一个非缺失值。在这种情况下,当然0也是一个不可接受的结果,所以我使用1,因为它似乎无害。
此外,一个更好的基于数学的解决方案将是
if (mod(mobile_telephone1,1e10) - mod(mobile_telephone1,1e9) = 7e9) ...
不需要使用log10等,只需比较模数。