我很擅长使用SAS,并希望在合并两个不包含一个密钥标识符但需要三个条件组合成功合并的数据集时请求帮助。
我有两个数据集:
StartDate
,EndDate
,EmployeeNumber
和CustomerNumber
。 EmployeeNumber
和CustomerNumber
目标是保留第一个数据集,并在第二个数据集可用时添加信息 - 基于日期,员工编号和客户编号的匹配。
重要的是,活动数据集中的日期变量仅在某一天,而在访问数据集中,它是开始日期和结束日期之间的范围。所以,数据集如下所示: Base datasets
逻辑上,它应该是基于三个条件的合并:
因此,理想的新数据集如下所示:
Intended result of merge
如果活动数据集中没有条目,则新数据集应仅包含相应变量的空白。对于所有匹配,它应该添加相应的变量。
在SAS中尝试(相当简单)合并语句时,我通常会收到一条错误消息,指出" BY变量没有在数据集上正确排序"。此外,我不确定如何正确实施条件(特别是日期与范围的匹配)。
这种合并可以在SAS或SQL中完成吗? 非常感谢任何帮助!!!
答案 0 :(得分:0)
我倾向于使用proc sql来处理这种事情,它只是一个相对简单的连接,其中SQL优于。尝试这样的事情:
proc sql;
create table merged_data as
select a.*, b.other_variable, b.other_variable2
from dataset1 as a
left join dataset2 as b
on a.EmployeeNumber = b.EmployeeNumber
and a.CustomerNumber = b.CustomerNumber
and b.Date between a.StartDate and a.EndDate
;
quit;