我在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
中的所有行匹配。
例如,one
3 行,two
5 行,crossings
15 行:
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;
如果有任何共同的列名,您应该重命名它们或合并()它们。