【发布时间】:2015-07-22 22:16:09
【问题描述】:
我有一个信用卡交易数据集(我们称之为“Trans”),其中包含交易金额、邮政编码和日期。我有另一个数据集(我们称之为“Key”),它列出了基于 date 和 geocode 的销售税率。 Key 数据集还包括与由 2 个变量表示的每个地理编码相关联的一系列邮政编码:Zip Start 和 Zip End。
由于地理编码与邮政编码不一致,一些邮政编码范围会重叠。如果发生这种情况,我想使用与 Trans 中显示的邮政编码相关的最低销售税率。
跨数据集:
TransAmount TransDate TransZip
$200 01/07/1998 90010
$12 02/09/2002 90022
关键数据集:
Geocode Rate StartDate EndDate ZipStart ZipEnd
1001 .0825 199701 200012 90001 90084
1001 .085 200101 200812 90001 90084
1002 .0825 199701 200012 90022 90024
1002 .08 200101 200812 90022 90024
期望的输出:
TransAmount TransDate TransZip Rate
$200 01/07/1998 90010 .0825
$12 02/09/2002 90022 .08
我在 SAS 中使用了这个基本的 SQL 代码,但遇到了邮政编码重叠的问题。
proc sql;
create table output as
select a.*, b.zipstart, b.zipend, b.startdate, b.enddate, b.rate
from Trans.CA_Zip_Cd_Testing a left join Key.CA_rates b
on a.TranZip ge b.zipstart
and a.TranZip le b.zipend
and a.TransDate ge b.StartDate
and a.transDate le b.EndDate
;
quit;
【问题讨论】:
-
a) 为什么
excel在标签列表中? b) 尝试先创建一个邮政编码级别表,该表首先具有最低的费率,然后在上面的 sql 中使用它? -
谢谢乔。 a) 关键数据集在 Excel 中,所以也许解决方案可以在 Excel 中完成,正如你在 b) 中提到的那样,这是我的第一个想法,但是有 2500 多个唯一的邮政编码和重叠,它仍然很棘手。另外,我在 SAS 中处理矩阵的经验并不多。