如何在SAS/SQL中水平组合不匹配的数据集?



我在SAS中编写SAS基本语句和SQL语句。

我的问题是,我有两个数据集要水平组合。

一个数据集称为代码,有一个变量:Code_value 它有 55 个观测值,没有重复值。

另一个数据集称为人员,有一个变量:Person_id 它具有 167 个唯一的person_id值。

我想创建一个数据集,在其中连接这些数据集。 - 两个数据集中没有匹配的值。 我想强制将数据集放在一起,所以我有一个数据集,每个person_id都有一个数据集,每个code_value都有一行。

所以我有这些值组合的组合:

代码 1 Pid1

代码 1 Pid2

代码 1 Pid3

代码 2 Pid1

代码2 Pid2

代码2 Pid3

。等。最终得到一个包含 2 个变量和总共 9185 行的数据集。

我尝试过使用合并的数据步骤,也尝试编写具有完全连接的sql,但没有运气。

谁能帮忙?

亲切问候 玛丽亚

这称为交叉联接。我更喜欢明确列出交叉连接。

proc sql;
create table want as
select *
from code
CROSS JOIN
persons;
quit;

或没有任何规格:

proc sql;
create table want as
select *
from one, two;

两者都应该给你相同的答案。

连接的ON条件应为1=1。 这将导致one中的所有行都与two中的所有行匹配。

例如,one3 行,two5 行,crossings15 行:

data one;
do i = 1 to 3;
output;
end;
run;
data two;
do j = 1 to 5;
output;
end;
run;
proc sql;
create table crossings as
select * 
from one full join two on 1=1
;
quit;

如果有任何共同的列名,您应该重命名它们或合并()它们。

相关内容

最新更新