楼主: appleqiuqiu
24415 10

[问答] 如何从一个表中筛选出符合另一个表条件的数据 [推广有奖]

  • 0关注
  • 1粉丝

已卖:773份资源

副教授

41%

还不是VIP/贵宾

-

威望
0
论坛币
3666 个
通用积分
2.9200
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4191 点
帖子
133
精华
0
在线时间
1514 小时
注册时间
2010-4-27
最后登录
2022-6-22

楼主
appleqiuqiu 发表于 2013-5-10 22:51:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
题目说的可能有些绕口,下面我具体解释一下:
1.png 2.png
我用上面两个表进行举例,txt是我的dataset1,list是我的dataset2,list是我的筛选条件,我要从dataset1里筛选出包含list中关键词的observation,当然我这里list中的关键词有好多,我只是截出了其中的一部分,如果就按现在的显示,那么我筛选出的observation就是“北京大学研究生学费是多少”。请问像这种在两个数据集中进行筛选(一个作为条件)应该如何实施?是要用SQL进行吗?请各位高人指点啊,现在就卡在这了。。。。。在下跪谢!!!不胜感激
二维码

扫码加我 拉你入群

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

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

关键词:筛选出 observation observat dataset DataS 如何

沙发
appleqiuqiu 发表于 2013-5-10 23:23:02
自己顶一下,跪求高人指点迷津

藤椅
yuerqieqie 发表于 2013-5-10 23:34:51
这个有很多方法可以实现。
用SQL
proc sql;
        create table result as
        select a.text, b.name
        from dataset1 a , dataset2 b
        where index(text, name) ne 0;
quit;

用macro
%macro findobs(base = dataset1, lst = dataset2, outdata = result);
        data _null_;
                set &lst end = eof;
                call symput(compress('name'||_n_), name);
                if eof then call symput('n', _n_);
        run;
        %local i;
        data &outdata;
                set &base;
                if 0
                        %do i = 1 %to &n;
                                or (index(text, "&&name&i") ne 0)
                        %end;
                ;
        run;
%mend;
%findobs();

还能用hash iteration
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 80 + 80 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 80  论坛币 + 80  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

板凳
appleqiuqiu 发表于 2013-5-11 10:51:00
yuerqieqie 发表于 2013-5-10 23:34
这个有很多方法可以实现。
用SQL
proc sql;
牛人!!!太感谢了,已经解决了我的问题

报纸
appleqiuqiu 发表于 2013-5-11 19:57:16
yuerqieqie 发表于 2013-5-10 23:34
这个有很多方法可以实现。
用SQL
proc sql;
又要麻烦你一下,where index(txt,name) ne 0这个说的是txt里的字符减去name里的字符不等于0吗?因为我发现想这种,如txt里是“清华大学mab怎么样”,name”里是“清华大学”,这个observation没有筛选出来,而当txt里是“mab清华大学”,name里是“清华大学”,这个observation就筛选出来了

地板
yuerqieqie 发表于 2013-5-13 20:39:51
appleqiuqiu 发表于 2013-5-11 19:57
又要麻烦你一下,where index(txt,name) ne 0这个说的是txt里的字符减去name里的字符不等于0吗?因为我 ...
index(txt,name) ne 0 是指txt里包含name里的字符串。

关于index的用法可以参考
http://support.sas.com/documenta ... 4n10nrbnzp7gnba.htm

7
appleqiuqiu 发表于 2013-5-14 12:38:04
yuerqieqie 发表于 2013-5-13 20:39
index(txt,name) ne 0 是指txt里包含name里的字符串。

关于index的用法可以参考
哦,是这样啊,多谢!以后要多多学习SAS版的精华帖了

8
pl172231 发表于 2013-5-14 22:23:11
我也来一个
data merge1;
merge txt list;
run;
data result;
set merge1;
x=prxparse('m/'||list||'/');
if prxmatch(x.txt) then output;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
boe + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

9
appleqiuqiu 发表于 2013-5-15 00:09:48
pl172231 发表于 2013-5-14 22:23
我也来一个
data merge1;
merge txt list;
请问大神倒数第二和第三行是啥子命令。。。表示头一次看见,可否给个注释。。。

10
mclrenjing 在职认证  发表于 2013-6-16 09:19:35
帮忙顶
金融投资那点事一看就明白 网址 **** 微信公众号 shanmenliu

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 15:13