【发布时间】:2016-02-19 19:51:59
【问题描述】:
可能是一个简单的问题。我有一个简单的数据集,其中包含预定的付款日期。
DATA INFORM2;
INFORMAT previous_pmt_date scheduled_pmt_date MMDDYY10.;
INPUT previous_pmt_date scheduled_pmt_date;
FORMAT previous_pmt_date scheduled_pmt_date MMDDYYS10.;
DATALINES;
11/16/2015 12/16/2015
12/17/2015 01/16/2016
01/17/2016 02/16/2016
;
我要做的是创建一个二进制最新行指示器。例如,如果我想知道截至 2016 年 1 月 31 日的最新行,我希望将第 2 行标记为最新行。我之前一直在做的是找出 2016 年 1 月 31 日在 previous_pmt_date 和 schedule_pmt_date 之间的位置,但这不符合我的目的。我想在数据步骤中执行此操作,而不是 SQL 子查询。有什么想法吗?
想要:
previous_pmt_date scheduled_pmt_date latest_row_ind
11/16/2015 12/16/2015 0
12/17/2015 01/16/2016 1
01/17/2016 02/16/2016 0
【问题讨论】:
-
数据步骤偏好有什么特别的原因吗?我问是因为 SQL 会更容易/更短......
-
我已经有一个更大的数据步骤,我想将其集成到其中,但如果您有一些 SQL 建议,我很乐意使用这些建议。
-
好吧,我想有一些 datastep 解决方案可能符合要求……我们可以假设数据按 schedule_pmt_date 升序排序吗?并且给定帐户的日期范围永远不会重叠(您没有显示帐户,但我假设有一个)。
-
是的,没错。按升序帐户和 schedule_pmt_date 排序。给定帐户没有重叠范围。
-
是否必须在单个数据步中完成。或者可以使用另一个数据步吗?我是否正确理解日期间隔 [previous_pmt_date; schedule_pmt_date] 不相交。对于给定的示例是的,但是对于所有数据?
标签: sas