【发布时间】:2016-05-31 11:00:36
【问题描述】:
我在 SAS 中有 3 个数据集:
main_1
ID Rep Dose Response
1 2 34 567
1 1 45 756
2 1 35 456
3 1 56 345
main_2
ID Rep Hour Day
1 1 89 157
2 1 62 365
3 1 12 689
main_3
ID Rep Town City
1 1 3268 151643
2 1 2574 165435
3 1 1254 135435
2 2 1563 135435
将表导入 SAS 后,我目前有以下 proc SQL 代码(我对它的糟糕之处感到非常抱歉)来合并表,以便每个 ID 和 Rep 都包含所有相关信息。我似乎无法有效地合并所有 3 个表,因为 main_1 不包括所有可能的 ID 和 Rep 组合(实际上它们都没有):
PROC SQL;
create table merged_sql_2 as
select A.*,
B.hour,
B.day,
C.Town,
C.City
from main_1 as A
LEFT JOIN main_2 as B
on A.ID = B.ID
and A.Rep = B.Rep
LEFT JOIN main_3 as C
on A.ID = C.ID
and A.Rep = C.Rep;
QUIT;
生成以下内容,但缺少 1 个观察结果:
ID Rep Dose Response Hour Day Town City
1 1 45 756 89 157 3268 151643
1 2 34 567 - - - -
2 1 35 456 62 365 2574 165435
3 1 56 345 12 689 1254 135435
我需要合并所有可能的匹配以实现以下目标:
ID Rep Dose Response Hour Day Town City
1 1 45 756 89 157 3268 151643
1 2 34 567 - - - -
2 1 35 456 62 365 2574 165435
2 2 - - - - 1563 135435
3 1 56 345 12 689 1254 135435
如果上面的代码是完全错误的方法,那么我很高兴学习其他 SQL 替代方案!
非常感谢。
【问题讨论】:
标签: merge sas multiple-tables proc-sql