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

SAS start and end date from consecutive run

我有一个客户在一年中连续几天购买商品的数据集,例如客户 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 日的结束日期。

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

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 语句中的天数,以调整您希望允许的间隔有多大,并且仍然将事件视为同一组的一部分。