我拥有的数据和下面的图片很像。我有他们买的日期,顾客的名字和不同种类的水果。

我希望创建一个新的列来统计“双卖出”发生了多少次。例如,第一次与客户A的交互是在1/15,如果第二次交互是在第一次交互和的7天内销售水果,我希望它将1放在“双售出”列中。
本质上,我希望SAS与客户ID相匹配,然后沿着行并查找第一个行7天内的日期。
发布于 2017-02-16 18:50:55
问:为什么ID=C在您的示例中有DOUBLE_SOLD=1?没有其他ID=C可与之比较。在任何情况下,您都希望按照ID date进行排序,然后根据ID对DATE进行滞后,以便使用简单的逻辑进行比较:
proc sort data = have;
by ID DATE;
run;
** edit sales to 1/0 **;
data have1; set have;
array a(3) APPLE ORANGE PEAR;
do i=1 to dim(a);
if a(i)>0 then a(i)=1;
end;
drop i;
run;
data want; set have1;
by ID;
LAG_DATE=lag(DATE);
if first.ID then LAG_DATE = .;
if LAG_DATE ne . then do;
if (DATE-LAG_DATE)<=7 and sum(APPLE,ORANGE,PEAR)>0 then DOUBLE_SOLD=1;
else if (DATE-LAG_DATE)>7 or sum(APPLE,ORANGE,PEAR)=0 then DOUBLE_SOLD=0;
end;
else do;
if sum(APPLE,ORANGE,PEAR)>1 then DOUBLE_SOLD=1;
else DOUBLE_SOLD=0;
end;
format LAG_DATE mmddyy10.;
run;https://stackoverflow.com/questions/42278200
复制相似问题