【发布时间】:2016-12-19 06:35:37
【问题描述】:
我对使用 SAS 很陌生,想请你帮忙合并两个不包含一个键标识符但需要三个条件的组合才能成功合并的数据集。
我有两个数据集:
- 数据集 1 包含有关客户访问的信息,包括
StartDate、EndDate、EmployeeNumber和CustomerNumber。 - 数据集 2 包含有关访问期间可能已执行的某些活动的信息,以及执行活动的“日期”和
EmployeeNumber和CustomerNumber
目标是保留第一个数据集,并在第二个数据集可用时添加信息 - 基于日期、员工编号和客户编号的匹配。
重要的是,活动数据集中的日期变量只是一天,而在访问数据集中,它是开始日期和结束日期之间的范围。因此,数据集如下所示: Base datasets
从逻辑上讲,应该是基于三个条件的合并:
- IF EmployeeNumber = EmployeeNumber
- 如果客户编号 = 客户编号
- IF 日期在 StartDate 和 EndDate 之间
然后:使用来自活动数据集的信息更新访问数据集
因此,理想的新数据集应如下所示:
Intended result of merge
如果活动数据集中没有条目,则新数据集应仅包含相应变量的空白。对于所有匹配,它应该添加相应的变量。
在 SAS 中尝试(相当简单)合并语句时,我通常会收到一条错误消息,指出“BY 变量未在数据集上正确排序”。此外,我不确定如何正确实现条件(特别是日期与范围的匹配)。
这种合并可以在 SAS 或 SQL 中完成吗?
非常感谢任何帮助!!!
【问题讨论】:
标签: merge sas conditional