检查单元格是否包含非字母字符SAS

时间:2019-06-19 16:56:27

标签: sas

如果变量包含非字母字符,我正在寻找函数

我找到了功能

notalpha

data test;
set final_step1;
f_test = notalpha(first_name);
l_test = notalpha(last_name);
keep emplid first_name last_name f_test l_test;
run;

但显示如下

Last_name Abate  f_test
John             4

它应该显示为0

notalpha(“ %%%%%”);应该显示1来自

https://books.google.com/books?id=d58uBZPO0IwC&pg=PA28&lpg=PA28&dq=notalpha+sas&source=bl&ots=XKM3DlDol-&sig=ACfU3U1SReZzc5zjsXcCdls3twlUReOxBA&hl=en&sa=X&ved=2ahUKEwjV_Pmb_vXiAhXkna0KHWrmBYgQ6AEwB3oECAkQAQ#v=onepage&q=notalpha%20sas&f=false

是在SAS上找到非字母值的函数,还是在代码上出错了?

3 个答案:

答案 0 :(得分:1)

使用TRIMN函数删除尾随空格,并在名称为空时返回长度为0的字符串(如有必要)。

pos_notalpha = notalpha ( TRIMN ( name )) ;

如果您也有前导空格,请使用STRIP

leftedpos_notalpha = notalpha ( STRIP ( name )) ;

来自帮助

  

NOTALPHA功能

     

在字符串中搜索非字母字符,并返回   找到角色的第一个位置。

  

TRIMN功能

     

从字符表达式中删除尾随空格,并返回   如果缺少表达式,则长度为零的字符串。

  

STRIP功能

     

返回一个字符串,其中所有前导和尾随空格均已删除。
  …
  STRIP函数返回所有前导和尾随参数   空白被删除。如果参数为空,则STRIP返回带有   长度为零。

答案 1 :(得分:0)

为此,您可以引用anyalpha函数,请参见下面的代码:

data have;
input name $10.;
anyalp=anyalpha(name);
if anyalp=0 then notalpha=1;
else if anyalp>0 then notalpha=0;
drop anyalp;
datalines;
%%%%%
01233
abcdef
@bc
abc123
;
run;

proc print data=have; run;

文档:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002194060.htm

答案 2 :(得分:0)

我会用

lengthn(compress(first_name,".",'a'))

compress删除所有字母字符。如果结果字符串的长度大于零,则它包含非字母字符。