全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11872 3
2010-09-19
有2个文件,一个文件file1里有个variable 就叫name,另一个文件file2有个variable就叫term. 想找出所有的name里包含term字符的oberveration.写个一个程序如下“
DATA file2;
   length term term1 $28.;
   SET BADWORD0;
   TERM = '%'||TRIM(UPCASE(TERM1))||'%';
RUN;
proc sql;
   select  "(name like'" || trim(term) || "')" into :macrovar separated by " or " from file2;
create table matches as select *  from file1  where ¯ovar);
quit;
这个程序能找出在name里有term字符串。但是想要在match table 里也包括term一个column.又写了一个程序如下:
proc sql;
create table matches1 as
select file1.* , file2.term
from file1, file2
where file1.name like file2.term
order by 2;
quit;
但是2个程序的查找出的结果不一样, matches1 要比matches 少好些
请教问题出在哪里?怎么解决这个match的问题。 先谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-9-19 14:48:36
生成matches1 的sql语句运行结果是一个笛卡尔积,所以会多出来
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-19 14:55:15
where file1.name like file2.term
中file2.term多余的尾部空格使得like不匹配,试下compress(file2.term)
还有如果存在name同时包含多个term中的字符串,那么宏语句条件筛选仅出一条,inner join将筛选出多条(每个term一条)
所以开始感觉应该matches1 比matches记录多......
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-3 21:24:22
楼主,解决了吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群