如何在 SAS 中使用 prosql 使行与 2 个以上的表绑定
How to make row bind with more than 2 tables using prosql in SAS
我有多个表,例如 Table1
Table2
Table3
、Table4
它们具有相同顺序的相同列。我想垂直绑定它们
我不知道怎么做。
我试过这段代码:
PROC SQL;
create table Table_final AS
(
select * from Table1
union all
select * Table2
union all
select * Table3
union all
select * Table4
);
QUIT;
但是不行
很高兴你用另一种方式自己解决了这个问题。但是,您通过忽略查询中的 FROM
语句而犯了一些语法错误。
这是您更新后的代码:
PROC SQL;
create table Table_final AS
(
select * from Table1
union all
select * from Table2
union all
select * from Table3
union all
select * from Table4
);
QUIT;
这对我有用。
SQL 或数据步骤不是非常高效,因为它们逐行处理数据。相反,最快的方法是使用 PROC APPEND 一次将它们组合在一起。这会逐块复制数据,而不是一次复制一行。请注意,在此过程之前,Base table 不需要存在。
proc append base=table_final data=data1;
run;
proc append base=table_final data=data2;
run;
proc append base=table_final data=data3;
run;
我有多个表,例如 Table1
Table2
Table3
、Table4
它们具有相同顺序的相同列。我想垂直绑定它们
我不知道怎么做。
我试过这段代码:
PROC SQL;
create table Table_final AS
(
select * from Table1
union all
select * Table2
union all
select * Table3
union all
select * Table4
);
QUIT;
但是不行
很高兴你用另一种方式自己解决了这个问题。但是,您通过忽略查询中的 FROM
语句而犯了一些语法错误。
这是您更新后的代码:
PROC SQL;
create table Table_final AS
(
select * from Table1
union all
select * from Table2
union all
select * from Table3
union all
select * from Table4
);
QUIT;
这对我有用。
SQL 或数据步骤不是非常高效,因为它们逐行处理数据。相反,最快的方法是使用 PROC APPEND 一次将它们组合在一起。这会逐块复制数据,而不是一次复制一行。请注意,在此过程之前,Base table 不需要存在。
proc append base=table_final data=data1;
run;
proc append base=table_final data=data2;
run;
proc append base=table_final data=data3;
run;