我在SAS中有多个表,其列与我想合并的列相同
table_1
obj_Id | value_txt
1 | T1
2 | T1
3 | T1
table_2
obj_Id | value_txt
1 | T2
2 | T2
3 | T2
table_3
obj_Id | value_txt
1 | T3
2 | T3
3 | T3把它们合并为一体,我可以
proc sql noprint;
create table merge as
select t1.obj_id, t1.value_txt as T1, t2.value_txt as T2, t3.value_txt as T3
from table_1 t1, table_2 t2, table_3 t3,
where t1.obj_id eq t2.obj_id
and t1.obj_id eq t3.obj_id;
quit;但是在我的实际场景中,我的表在15-20之间,每个表中有超过5K的记录,所以这个方法变得非常慢,需要5-7分钟的时间来处理。
我正在寻找一种更好、更快速的方法,将表合并成一个按列排列的表。
发布于 2018-03-01 11:52:21
下面的SAS SQL和Merge代码都将创建相同的输出:
/*SAS Inner Join*/
proc sql noprint;
create table merge as select
t1.obj_id , t1.value_txt as T1, t2.value_txt as T2, t3.value_txt as T3
from
table_1 t1 inner join table_2 t2 on t1.obj_id = t2.obj_id
inner join table_3 t3 on t1.obj_id = t3.obj_id;
quit;
/*SAS Data Step Megrge*/
data merge_sas;
merge table_1(rename=(value_txt=T1)) table_2(rename=(value_txt=T2)) table_3(rename=(value_txt=T3));
by obj_id;
run;输出:

https://stackoverflow.com/questions/49047119
复制相似问题