我正在SAS数据集中寻找特定的雇主。该数据集尚未进行拼写检查,因此,如果我正在寻找Univ,可以将其输入为大学,大学,大学...
我尝试扫描,计算匹配的字母“包含”。这些是工作,但我仍然缺少一些。
proc sql; 创建表SpecificEmployers为 选择 * ,如果雇主包含“ Univ”然后是“ Y” 否则'N'结尾为Emp 来自所有雇主 ; quit;
答案 0 :(得分:0)
在这种情况下,建议不要搜索最常见的单个字符,例如U,N,V等,而不是搜索子字符串。然后,您只能保留那些具有所有这些字符可用的值。例如-我使用了findc函数来搜索具有U,N和V的字符串
data have;
input string $15.;
datalines;
uNiverstY
UNVERSTy
college
univercity
school
schools
UNIVERSITY
Uversity
unvarcity
school123
;
run;
proc sql;
select string from have
where findc(upcase(string),'U')>=1
and findc(upcase(string),'N')>=1
and findc(upcase(string),'V')>=1;
quit;
proc print data=want; run;
使用大写字母也可以使您的任务轻松..因此,您不必担心这种情况。您可以根据需要设置任意数量的条件
答案 1 :(得分:0)
您应该研究一些编辑距离功能:
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002206133.htm
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002206137.htm
一种方法是遍历雇主名称中的每个单词,并查看与字符串university
相比,单个单词中的任何一个单词的编辑距离是否低于某个阈值。