Merge SAS:Concat列来自不同表(相同的行数)
我有两个行数相同的表,但没有一列可以连接在一起。比如:Merge SAS:Concat列来自不同表(相同的行数),merge,sas,Merge,Sas,我有两个行数相同的表,但没有一列可以连接在一起。比如: 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; 或 但特别是第二个给了我错误: 错误:U
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;
或
但特别是第二个给了我错误:
错误:UNION的第一个参与者的第1列不相同
键入第二个字符的对应项
因此,如果我不能正确地理解,我就不能用不同类型的变量进行这种连接
谢谢 您可以使用
merge
语句,而不使用任何by
语句来获得两个或多个数据集观测值的逐行匹配
data concated;
merge table1 table2;
run;
您也可以对每个数据集使用单独的set
语句
data concated;
set table1;
set table2;
run;
当两个数据集有不同数量的观测值时,就会出现差异。使用
merge
时,观察值的数量将与较大数据集的数量相匹配。(仅来自较小数据集的变量将保留其值。)使用set
语句,结果将仅具有较小数据集中的观察值数量。当任一set
语句读取的数据超过输入数据集的末尾时,该步骤将结束。您可以使用merge
语句,而不使用任何by
语句,以逐行匹配两个或多个数据集的观测值
data concated;
merge table1 table2;
run;
您也可以对每个数据集使用单独的set
语句
data concated;
set table1;
set table2;
run;
当两个数据集有不同数量的观测值时,就会出现差异。使用
merge
时,观察值的数量将与较大数据集的数量相匹配。(仅来自较小数据集的变量将保留其值。)使用set
语句,结果将仅具有较小数据集中的观察值数量。当任一set
语句读取的数据超过输入数据集的末尾时,该步骤将结束。执行类似于查询中的操作。您需要使用如下所示的行号,然后加入和删除
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
;
在查询中执行类似的操作。您需要使用如下所示的行号,然后加入和删除
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
;
请注意,假设观测值实际上是按匹配顺序排列的,而没有任何标识符变量可用于验证您是否组合了正确的观测值,这不是一种良好的数据管理做法。“你能做并不意味着你应该做。”汤姆谢谢你的留言。在我的具体案例中,我将始终具有相同的行数和相同的顺序-因此,您的解决方案是完美的。请注意,假设观测值实际上处于匹配顺序,而没有任何标识符变量可用于验证您是否结合了正确的观测值,这不是一种良好的数据管理实践。“你能做并不意味着你应该做。”汤姆谢谢你的留言。在我的具体情况下,我将始终具有相同的行数和相同的顺序-因此,您的解决方案是完美的。