全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3239 12
2010-03-26
悬赏 1000 个论坛币 已解决
遇到一个数据处理问题,请教高手!

数据集1:

公司   年份  价格

1    1    3
1    2    5
2    1    2  
2    2    3
3    1    3
3    2    7

数据集2:

公司

2
3

现在想把数据集1中包含数据集2中变量A的所有公司留下,其他去掉。数据量很大。
怎么编程呀?

最佳答案

gzjb 查看完整内容

data a; input company year price; datalines; 1 1 3 1 2 5 2 1 2 2 2 3 3 1 3 3 2 7 ; data b; input company; datalines; 2 3 ; proc sql; create table abcom AS select * from a where company in (select company from b) ; quit; proc print noobs; run; SAS Output: company year price ...
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-26 19:05:30
data a;
input company year price;
datalines;
1    1    3
1    2    5
2    1    2  
2    2    3
3    1    3
3    2    7
;

data b;
input company;
datalines;
2
3
;

proc sql;
create table abcom AS
select *
from a
where company in (select company from b)
;
quit;

proc print noobs; run;


SAS Output:

                                 company    year    price

                                         2         1       2
                                         2         2       3
                                         3         1       3
                                         3         2       7

Or use sql like:
***********************
proc sql;
create table abcom AS
select * from a,b
where a.company=b.company;
;
quit;

*or;
proc sql;
create table abcom AS
select a.company,a.year,a.price from a,b
where a.company=b.company;
;
quit

*Or;
proc sql;
create table abcom AS
select a.company,a.year,a.price from a inner join b
on  a.company=b.company;
;
quit;
二维码

扫码加我 拉你入群

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

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

2010-3-26 19:47:48
*** method1 using SQL listed in 2nd floor***;

*** the follows is methods2 ***;

data a;
input company year price;
datalines;
1    1    3
1    2    5
2    1    2  
2    2    3
3    1    3
3    2    7
;

data b;
input company;
datalines;
2
3
;


proc sort data=a out=asort;
by company;
run;

proc sort data=b out=bsort;
by company;
run;

data newab;
merge asort (in=ina) bsort(in=inb);
by company;
if ina and inb;
run;

proc print noobs; run;

SAS Output:

                                  company    year    price

                                         2         1       2
                                         2         2       3
                                         3         1       3
                                         3         2       7
二维码

扫码加我 拉你入群

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

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

2010-3-26 20:45:56
楼上的答案很好。另外的方法还有

复制代码
二维码

扫码加我 拉你入群

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

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

2010-3-26 21:05:57
关键是哪个效率更好...
二维码

扫码加我 拉你入群

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

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

2010-3-26 21:10:55
醉_清风 发表于 2010-3-26 21:05
关键是哪个效率更好...
呵呵。当然是我的好了。1. 我的不需要sort; 2. 我的不需要笛卡尔匹配 (对不起,这个说法好像有问题)。所以,只好说。。。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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