全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11738 5
2012-03-02
我碰到问题是这样的,有两个数据集a和b:
                   a                                                                                  b
firmname firmcode var1 var2 var3                      firmname firmcode var1 var2 var3
    a               01       x      x      x                               aX           01       x     x       x

我想知道哪些公司在两个数据集上都出现过,并统计和列出这些公司的名字和代码。但是现在有一个问题,两个数据上的公司名字,也就是第一个变量firmname在两个数据集上的表示是有差异的,所以只能用FIRMCODE,也就是公司代码来识别他们。

想请教一下各位大神怎样才能找出两个数据集上都出现过的公司,并且只保留这些公司的数据,谢谢了~
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-2 08:06:21
proc sql;
create table c as
select *
from a
where firmcode in (select firmcode from b);
quit;
二维码

扫码加我 拉你入群

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

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

2012-3-2 08:51:55
另一种思路:
proc sort data=a;
   by firmcode;

proc sort data=b;
   by firmcode;

data want;
   merge a(in=a) b(in=b);
   by firmcode;
   if a and b;
run;
二维码

扫码加我 拉你入群

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

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

2012-3-2 09:01:56
楼上的代码很棒!
不过楼主,我觉得如果做分析,那不需要只提取出那些交集的部分,而应该保留所有的数据,但是加入两个indicator->a_indicator 和 b_indicator,如果在a则a_indicator=1, 如果b则b_indicator=1,这样如果导出excel文件,分析起来很舒服,而且如果以后要对所有的数据进行分析,也不会回头做工作~
二维码

扫码加我 拉你入群

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

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

2012-3-2 15:51:52
try to use intersect in proc sql...
二维码

扫码加我 拉你入群

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

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

2012-3-20 04:20:52
mymine 发表于 2012-3-2 08:06
proc sql;
create table c as
select *
Thank you very much, your codes are essenal to my study!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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