SAS搜索字符串中的多个值
我有两个SAS数据集,每个数据集中(为简单起见)有一个char变量。第一个数据集有一个带有公司描述的变量(有时包括城市,有时不包括;一个混乱的字段),第二个数据集有一个变量,其中列出了所有城市。我需要在第一个数据集中创建一个变量,说明是否找到了第二个数据集中的任何城市,结果不应该只包含0或1个答案,而是城市本身。SAS搜索字符串中的多个值,sas,Sas,我有两个SAS数据集,每个数据集中(为简单起见)有一个char变量。第一个数据集有一个带有公司描述的变量(有时包括城市,有时不包括;一个混乱的字段),第二个数据集有一个变量,其中列出了所有城市。我需要在第一个数据集中创建一个变量,说明是否找到了第二个数据集中的任何城市,结果不应该只包含0或1个答案,而是城市本身。 有没有一种不循环INDEXW(或类似)函数的简单方法?INDEXW有什么问题?使用procsql和indexw可以提供非常简单的解决方案 样本数据: data have_messy;
有没有一种不循环INDEXW(或类似)函数的简单方法?INDEXW有什么问题?使用
procsql
和indexw
可以提供非常简单的解决方案
样本数据:
data have_messy;
length messy $100;
messy = 'this is a city name: brisbane' ; output;
messy = 'this is a city name: sydney' ; output;
messy = 'this is a city name: melbourne'; output;
run;
data have_city;
length city $20;
city = 'sydney' ; output;
city = 'brisbane'; output;
run;
查询示例:
proc sql noprint;
create table want as
select a.*,
b.city
from have_messy a
left join have_city b on indexw(a.messy, b.city)
;
quit;
结果:
messy city
=============================== =========
this is a city name: sydney sydney
this is a city name: brisbane brisbane
this is a city name: melbourne
请小心-如果找到多个城市名称,上述查询可能会在表a中的每行返回多个结果。我建议您运行后续步骤,根据您的要求处理任何重复的行。没有问题!只是没意识到我可以在join中使用这个函数。。。今天学到了很多。谢谢