连续运行的SAS开始和结束日期

时间:2019-06-30 13:23:50

标签: date sas lag retain

我有一个数据集,客户一年中连续多天购买商品,例如客户A在1月1日,1月2日和1月3日停止购买,然后在2月1日,2月2日和2月3日再次购买。

我希望为每个客户捕获每个连续批次的第一个和最后一个日期(因此通常的MIN / MAX将在两个日期之间错过批次)。

我已经尝试过RETAIN和LAG,但我已经接近了,但并不是我想要的。

如何创建将为客户A显示两行的查询?即第1行显示1月1日的开始日期和1月3日的结束日期;第2行显示2月1日的开始日期和2月3日的结束日期。

1 个答案:

答案 0 :(得分:2)

您要根据日期之间是否存在间隔对值进行分组。因此,进行测试并创建一个新的组号变量。然后,您可以在分析中使用新的分组变量。

data want ;
  set have ;
  by id date;
  dif_days = dif(sales_date);
  if first.id then group=1;
  else if dif_days > 1 then group+1;
run;

您可以在最后一个IF语句中调整天数,以调整您希望允许的差距,同时仍将事件视为同一组的一部分。