我有一个个人数据库' SAS中的地址如下:
OBS ID addresstype effectivedate enddate postalcode
1 1 M Feb2000 Jan2003 A1A1A1
2 1 R Jan2003 Jan2020 B2B2B2
3 1 M Feb2016 Sep2016 C3C3C3
4 1 M Sep2016 Jan2020 D4D4D4
地址是住宅(R)或邮寄(M)。
对于每个人和每个时间段,如果我有住址,我想保留该地址并删除该段时间内的任何邮寄地址。如果在一段时间内没有记录住址,那么我会保留邮寄地址。对于此示例的个人,我希望干净的数据如下所示:
OBS ID addresstype effectivedate enddate postalcode
1 1 M Feb2000 Jan2003 A1A1A1
2 1 R Jan2003 Jan2020 B2B2B2
SAS中是否有任何方法可以根据两个日期(本示例中为effectivedate和enddate)创建时间间隔,然后将它们相互比较。在此先感谢您的帮助。
答案 0 :(得分:0)
假设每个客户都有1个住宅地址, 1)
impute
日期并在validDate中连接01,在enddate中连接30
每个数据集并使用input
函数和date9.
格式merge
数据集并比较间隔,您可以用每个行标记
标志然后子集基础 - 调用此数据集ds_semi append
ds_semi& ds_R创建最后一个或者,您可以在主数据集中执行第2步,然后查看point
option
的{{1}}以及如何在{{set
中执行另一个set
和另一个set
1}}可能会为您创建类似的输出。然而,这可能需要事先进行一些预处理,但它会一步完成。
你可以参考我下面的代码我曾经用来解决类似的问题,即在多行中找到值的差异来做出决定和分配值 -
do loop