如果变量包含非字母字符,我正在寻找函数
我找到了功能
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上找到非字母值的函数,还是在代码上出错了?
答案 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删除所有字母字符。如果结果字符串的长度大于零,则它包含非字母字符。