我有两个表,它们的行数相同,但是没有一列,我可以将它们连接在一起。喜欢:
data table1(keep=Model) table2(keep=MSRP);
set sashelp.cars;
run;
为了实现以下目的,我如何组合表1和表2:
在python中,我会以pandas.concat([table1, table2], axis=1)
的身份进行操作,但在这里我尝试尝试以下操作:
data cancated;
set table1 table2;
run;
或
proc sql;
create table joined as
select * from table1
union
select * from table2;
delete from joined where Model is missing or MSRP is missing;
run;
但特别是第二个给了我错误:
错误:UNION的第一个贡献者的第1列不同 从第二个开始输入。
因此,如果我完全理解,就无法使用不同类型的变量进行这种连接。
谢谢!
答案 0 :(得分:2)
您可以使用merge
语句而不使用任何by
语句来获取来自两个或更多数据集的观测值的逐行匹配。
data concated;
merge table1 table2;
run;
对于每个数据集,您也可以只使用单独的set
语句。
data concated;
set table1;
set table2;
run;
区别在于两个数据集具有不同数量的观察值。使用merge
时,观测值的数量将与较大数据集的数量相匹配。 (仅来自较小数据集的变量将保留其值。)使用set
语句,结果将仅具有较小数据集中的观测值数量。当任何set
条语句读取到输入数据集的末尾时,该步骤将结束。
答案 1 :(得分:1)
执行类似查询中的操作。您需要使用如下所示的行号,然后加入并删除。
data table1(keep=Model var) table2(keep=MSRP var);
set sashelp.cars;
var = _n_;
run;
proc sql;
create table joined(drop=var) as
select a.*, b.* from table1 a
full join table2 b
on a.var = b.var;
delete from joined where Model is missing or MSRP is missing
;