Sas 检查单元格是否包含非字母字符
如果变量包含非Alpha字符,我将查找函数 我找到了函数 诺塔法Sas 检查单元格是否包含非字母字符,sas,Sas,如果变量包含非Alpha字符,我将查找函数 我找到了函数 诺塔法 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%%;应该显
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
是否有任何函数在SAS上发现非字母值,或者我在代码上出错?为此,您可以参考任何Alpha函数,请参阅下面的代码:
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;
文档:我会使用
lengthn(compress(first_name,".",'a'))
压缩删除所有字母字符。如果结果字符串的长度大于零,则它包含非字母字符。使用TRIMN函数删除尾随空格,并在名称为空时返回长度为0的字符串(如有必要)
pos_notalpha = notalpha ( TRIMN ( name )) ;
如果也有前导空格,请使用STRIP
来自帮助
NOTALPHA函数
在字符串中搜索非字母字符,并返回
找到字符的第一个位置
及
TRIMN函数
从字符表达式中删除尾随空格,并返回
如果缺少表达式,则返回长度为零的字符串
及
带函数
返回删除了所有前导空格和尾随空格的字符串。
…
STRIP函数返回带所有前导和尾随的参数
删除空白。如果参数为空,STRIP将返回一个带有
长度为零
这看起来不对。约翰的第四个角色是阿尔法角色。但它后面的空间不是阿尔法。所以结果应该是5,而不是4。显著性并不明显,但它是有效的。循环压缩必须始终扫描所有字符,notalpha可以在第一个失败字符处停止,但函数嵌套可能会消除这一可笑的小差异。,可以替换为无参数双逗号,,
leftedpos_notalpha = notalpha ( STRIP ( name )) ;