SAS-循环通过数据

SAS-循环通过数据,sas,Sas,我有以下格式的数据集: Date Item Customer Qty 2017年5月10日硬盘IGM 1 2017年9月10日鼠标DCD 4 2017年11月10日鼠标IGM 1 假设数据是按日期排序的,我希望SAS循环查看每个记录,并回顾6周,查看客户是重复客户还是新客户 我的最终结果如下所示: Date Item Customer Qty Repe

我有以下格式的数据集:

Date            Item            Customer          Qty
2017年5月10日硬盘IGM 1
2017年9月10日鼠标DCD 4
2017年11月10日鼠标IGM 1

假设数据是按日期排序的,我希望SAS循环查看每个记录,并回顾6周,查看客户是重复客户还是新客户

我的最终结果如下所示:

Date            Item            Customer          Qty           Repeat Flag
2017年5月10日硬盘IGM 1 0
2017年9月10日鼠标DCD 4 0
2017年11月10日鼠标IGM 1 1

我是SAS的新手,在这里呆了一段时间。提前谢谢


编辑-我知道这可以使用ProcSQL来完成,但我尝试只使用SAS语言来实现它。

按客户和日期对数据进行排序

data want ;
  set have ;
  by customer date ;
  lag_date=lag(date);
  if first.customer then lag_date=.;
  new = lag_date < intnx('week',date,-6,'s');
run;
需要数据;
集有;
按客户日期;
滞后日期=滞后(日期);
如果是first.customer,则为lag_date=。;
新=滞后日期
6周回顾是什么意思?您是否想考虑最后一个记录超过6个星期前的客户为新的?第一个记录上的缺失的LaGyLead将评估<代码>新< /代码>为真。代码>新=。<滞后日期@chris Right。所以之前没有约会的人会被视为新客户。谢谢大家!这正是我想做的。工作起来很有魅力。我从未在SAS中使用过间隔函数,因此这非常有帮助。